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