我想以位串形式打印我的字節。我找到了方法String s = String.format("%8s", Integer.toBinaryString(headerArr[bytenumber])).replace(' ', '0');System.out.println(s);但我得到了超級奇怪的輸出:1111111111111111111111111111111100001111111111111111111111111111111111100000011111111111111111111111111111111100000000111111111111111111111111111111100000000001111111111111111111111111111100001111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111111111100000000111111111111111111111111111111100000000001111100001111000011100000011000000100我怎么可能收到不同的位串表示?
1 回答

30秒到達戰場
TA貢獻1828條經驗 獲得超6個贊
的文檔Integer.toBinaryString
狀態
如果參數為負,則無符號整數值是參數加上 2^32
改用
Integer.toBinaryString(headerArr[bytenumber] & 0xff);
該String.format("%8s", s)
確實從來沒有縮短的字符串s
。如果s
少于 8 個字符,它只會在前面加上空格。
添加回答
舉報
0/150
提交
取消