課程
/后端開發(fā)
/Java
/文件傳輸基礎(chǔ)——Java IO流
請問大家,“慕課”兩個中文字符的每個字節(jié)為什么有32位?不是每個字節(jié)8位嗎?
2017-06-16
源自:文件傳輸基礎(chǔ)——Java IO流 1-1
正在回答
因為你轉(zhuǎn)換的結(jié)果是二進制,你現(xiàn)在可能已經(jīng)知道了。
1:byte是8字節(jié)
2:int是32字節(jié)
3:toBinaryString()是將內(nèi)容轉(zhuǎn)換成2進制
由于2個字節(jié)組成一個漢字,而你又是2進制的,所以最終結(jié)果就是:
11111111111111111111111111000100 ? 11111111111111111111111110111101
??
? ? ? ? ? ? ? ? ??
? ? ? ? ?
不用 太計較輸出的內(nèi)容,GBK中一個漢字就是一個字節(jié)(8bit),
Integer.toBinaryString(int);函數(shù)是將一個integer類型整數(shù),轉(zhuǎn)換為無符號2進制數(shù)。
列子中:慕 轉(zhuǎn)成字節(jié)為:-60 -67
轉(zhuǎn)成java最終能顯示出來的位數(shù)32高位為0補1(雙字節(jié));
結(jié)果為:11111111111111111111111111000100(其中11000100代表-60)? ? 有符號的二進制取補碼的反碼 ????60
我認為是因為每個字節(jié)占八位 ?這里是16進制的 ?也就是八位十六進制的數(shù) ? 每個十六進制的數(shù)轉(zhuǎn)換為二進制是四位
所以轉(zhuǎn)換為二進制就是32位了 ? ?
看一下你的這個java文件是什么編碼。如果是utf-8的話。漢子占3個字節(jié)就是32位
慕課這兩個字轉(zhuǎn)換為字節(jié)后是負的,負的byte自動轉(zhuǎn)換為int是會按符號位擴展,正數(shù)的話是0沒什么影響,負數(shù)是1,你再按老師說的加個&0xff就會將前面的置0了,就成8位的了。前面那節(jié)二進制我現(xiàn)在都很懵逼。
? 你的輸出函數(shù)里面不一樣 ?System.out.println(Integer.toHexString(b));?
在Java中,如果想要把一個十進制整數(shù)轉(zhuǎn)換為十六進制,可以使用Integer.toHexString(int i)方法
關(guān)鍵是漢字根本就是不字節(jié)啊。。。
舉報
為您介紹IO流的使用,以及對象的序列化和反序列化的內(nèi)容
1 回答求大神來解答
2 回答好想問問老師一個底層的問題
7 回答編碼問題求解答
3 回答遍歷結(jié)果并不是如老師所講的,求解答
4 回答關(guān)于read()輸出問題,求解答。(自學黨真痛苦)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-09-12
因為你轉(zhuǎn)換的結(jié)果是二進制,你現(xiàn)在可能已經(jīng)知道了。
1:byte是8字節(jié)
2:int是32字節(jié)
3:toBinaryString()是將內(nèi)容轉(zhuǎn)換成2進制
由于2個字節(jié)組成一個漢字,而你又是2進制的,所以最終結(jié)果就是:
11111111111111111111111111000100 ? 11111111111111111111111110111101
??
? ? ? ? ? ? ? ? ??
? ? ? ? ?
2018-02-06
不用 太計較輸出的內(nèi)容,GBK中一個漢字就是一個字節(jié)(8bit),
Integer.toBinaryString(int);函數(shù)是將一個integer類型整數(shù),轉(zhuǎn)換為無符號2進制數(shù)。
列子中:慕 轉(zhuǎn)成字節(jié)為:-60 -67
轉(zhuǎn)成java最終能顯示出來的位數(shù)32高位為0補1(雙字節(jié));
結(jié)果為:11111111111111111111111111000100(其中11000100代表-60)? ? 有符號的二進制取補碼的反碼 ????60
2017-10-21
我認為是因為每個字節(jié)占八位 ?這里是16進制的 ?也就是八位十六進制的數(shù) ? 每個十六進制的數(shù)轉(zhuǎn)換為二進制是四位
所以轉(zhuǎn)換為二進制就是32位了 ? ?
2017-07-23
看一下你的這個java文件是什么編碼。如果是utf-8的話。漢子占3個字節(jié)就是32位
2017-07-11
慕課這兩個字轉(zhuǎn)換為字節(jié)后是負的,負的byte自動轉(zhuǎn)換為int是會按符號位擴展,正數(shù)的話是0沒什么影響,負數(shù)是1,你再按老師說的加個&0xff就會將前面的置0了,就成8位的了。前面那節(jié)二進制我現(xiàn)在都很懵逼。
2017-06-18
? 你的輸出函數(shù)里面不一樣 ?System.out.println(Integer.toHexString(b));?
在Java中,如果想要把一個十進制整數(shù)轉(zhuǎn)換為十六進制,可以使用Integer.toHexString(int i)方法
2017-06-17
關(guān)鍵是漢字根本就是不字節(jié)啊。。。