課程
/后端開發(fā)
/Java
/二進制基礎
如果需要轉(zhuǎn)二進制的話,先轉(zhuǎn)成String再用String的getBytes方法不就好了。。
2016-04-11
源自:二進制基礎 5-1
正在回答
實際開發(fā)中用到的不多,但是要處理亂碼的時候要用到,還有就是想成為高手,必須懂。
int轉(zhuǎn)換成2進制字節(jié)型數(shù)組說白了就是將一個整數(shù)變成2進制表示,從右到左按照每八位劃分開一個字節(jié),共四個字節(jié),也就是一個索引位4的數(shù)組。例如:00000000 00000000 00000011 00110011表示成十進制就是819,這里我解釋一下,int在java中是4字節(jié)存儲,4個字節(jié)恰好是32(4*8=32)位、每個字節(jié)是8位,字節(jié)是計算機中存儲的一個單位,用8位2進制數(shù)表示。
將一個整數(shù)轉(zhuǎn)化成2進制字符串可以用?String binaryStr = Integer.toBinaryString(8143);
整數(shù)轉(zhuǎn)換成2進制字節(jié)數(shù)組:例如:00000000 00000000 00000011 00110011表示成十進制就是819
需要把00110011單獨作為一個字節(jié) 就是51 ?具體算法是:51=0*2^7+0*2^6+1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0
以此類推:
00000011?單獨作為一個字節(jié) 就是3 ?
00000000單獨作為一個字節(jié) 就是0
所以819變成字節(jié)數(shù)組是[51,3,0,0]
老師算法解釋:arr[0] =(byte)((int)(id >> 0*8 & 0xff));
首先id右移n*8位(n表示第幾個字節(jié)),然后再&0xff,作用是讓高位為零,只保留最后八個字節(jié),然后將字節(jié)強制類型轉(zhuǎn)換為int型,最后在強制類型轉(zhuǎn)換為byte型,byte字節(jié),占用8個存儲位,oxff 十六進制數(shù),代表1111 1111。
操作過程:819 =00000000 00000000 00000011 00110011
首先:右移0*8位 結(jié)果為不變,還是00000000 00000000 00000011 00110011
然后:00000000 00000000 00000011 00110011&0xff = 00000000 00000000 00000000 00110011
最后:00000000 00000000 00000011 00110011轉(zhuǎn)換為int為51
在后:51轉(zhuǎn)換為byte為51
這里只展示了第一個,其他以此類推。只能這樣解釋了吧?。?!
長安1994 提問者
&0xff是什么意思.
Airly
我也不懂 ?占個地 ?哪位大神講解一下
舉報
二進制是計算機唯一能識別的語言,是學習計算機技術(shù)必備的知識
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-05-18
實際開發(fā)中用到的不多,但是要處理亂碼的時候要用到,還有就是想成為高手,必須懂。
int轉(zhuǎn)換成2進制字節(jié)型數(shù)組說白了就是將一個整數(shù)變成2進制表示,從右到左按照每八位劃分開一個字節(jié),共四個字節(jié),也就是一個索引位4的數(shù)組。例如:00000000 00000000 00000011 00110011表示成十進制就是819,這里我解釋一下,int在java中是4字節(jié)存儲,4個字節(jié)恰好是32(4*8=32)位、每個字節(jié)是8位,字節(jié)是計算機中存儲的一個單位,用8位2進制數(shù)表示。
將一個整數(shù)轉(zhuǎn)化成2進制字符串可以用?String binaryStr = Integer.toBinaryString(8143);
整數(shù)轉(zhuǎn)換成2進制字節(jié)數(shù)組:例如:00000000 00000000 00000011 00110011表示成十進制就是819
需要把00110011單獨作為一個字節(jié) 就是51 ?具體算法是:51=0*2^7+0*2^6+1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0
以此類推:
00000011?單獨作為一個字節(jié) 就是3 ?
00000000單獨作為一個字節(jié) 就是0
00000000單獨作為一個字節(jié) 就是0
所以819變成字節(jié)數(shù)組是[51,3,0,0]
老師算法解釋:arr[0] =(byte)((int)(id >> 0*8 & 0xff));
首先id右移n*8位(n表示第幾個字節(jié)),然后再&0xff,作用是讓高位為零,只保留最后八個字節(jié),然后將字節(jié)強制類型轉(zhuǎn)換為int型,最后在強制類型轉(zhuǎn)換為byte型,byte字節(jié),占用8個存儲位,oxff 十六進制數(shù),代表1111 1111。
操作過程:819 =00000000 00000000 00000011 00110011
首先:右移0*8位 結(jié)果為不變,還是00000000 00000000 00000011 00110011
然后:00000000 00000000 00000011 00110011&0xff = 00000000 00000000 00000000 00110011
最后:00000000 00000000 00000011 00110011轉(zhuǎn)換為int為51
在后:51轉(zhuǎn)換為byte為51
這里只展示了第一個,其他以此類推。只能這樣解釋了吧?。?!
2016-07-07
&0xff是什么意思.
2016-04-12
我也不懂 ?占個地 ?哪位大神講解一下