第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

long b=99999999999999999L轉(zhuǎn)換成byte[]后再轉(zhuǎn)回來對不上

public?class?Binary?{

????//將byte[]轉(zhuǎn)換成long
????public?long?byte2Long(byte[]?arr){
????????long?num?=?0;
????????for?(int?i=?0;?i?<?8;?i++)?{
????????????num?+=?(long)((arr[i]&0xff)<<i*8)?;
????????}
????????return?num;
????}
?????//將long轉(zhuǎn)換成byte[]
????public?byte[]?long2Byte(long?b){
????????byte[]?bytes=new?byte[8];
????????for?(int?i?=?0;?i?<?8;?i++)?{
????????????bytes[i]=(byte)((b>>i*8)&0xff);
????????}
????????return?bytes;
????}

????public?static?void?main(String[]?args)?{
????????Binary?test=new?Binary();
????????long?b=?99999999999999999L;
????????byte[]?bytes=test.long2Byte(b)?;
????????System.out.println(Arrays.toString(bytes));
????????System.out.println(test.byte2Long(bytes));
????}
}

轉(zhuǎn)回來變成了1592608119

正在回答

2 回答

long類型的數(shù)不是有值域范圍嘛,你這個明顯超出范圍了啊

0 回復(fù) 有任何疑惑可以回復(fù)我~

過了一段時間回過頭來看,在第7行與第8行之間插入 System.out.println(num);

發(fā)現(xiàn)打印出來的數(shù)據(jù)分別是:

255

65535

9043967

1569325055

1569325175

1569342839

1575830903

1592608119

然后我把第7行改成 num+=(long)(arr[i]&0xff)<<i*8;

結(jié)果就對了.

經(jīng)分析byte是4字節(jié)的,最多只能左移4位,超過4位就會造成數(shù)據(jù)丟失,要先轉(zhuǎn)換成long才能左移8位;

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

奔雷手文泰來 提問者

錯了,byte是1個字節(jié)的,arr[i]&0xff是默認的int型,4個字節(jié)?
2019-03-17 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
二進制基礎(chǔ)
  • 參與學(xué)習(xí)       99832    人
  • 解答問題       211    個

二進制是計算機唯一能識別的語言,是學(xué)習(xí)計算機技術(shù)必備的知識

進入課程

long b=99999999999999999L轉(zhuǎn)換成byte[]后再轉(zhuǎn)回來對不上

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號