我想以位字符串形式打印我的字节。我找到了方法
String s = String.format("%8s", Integer.toBinaryString(headerArr[bytenumber])).replace(' ', '0');
System.out.println(s);
但是我得到了超级奇怪的输出:
11111111111111111111111111111111
00001111
11111111111111111111111111111110
00000111
11111111111111111111111111111100
00000011
11111111111111111111111111111000
00000001
11111111111111111111111111110000
11111111111111111111111111111111
11111111111111111111111111100000
01111111
11111111111111111111111111000000
00111111
11111111111111111111111110000000
00011111
00001111
00001110
00000110
00000100
如何接收不同的位字符串表示形式?
答案 0 :(得分:1)
Integer.toBinaryString
的文档
无符号整数值是参数,如果参数是2 ^ 32 否定
改为使用
Integer.toBinaryString(headerArr[bytenumber] & 0xff);
String.format("%8s", s)
永远不会缩短字符串s
。仅当s
的字符数少于8个时,才添加空格。