我想以位字符串形式打印我的字节。我找到了方法
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
如何接收不同的位字符串表示形式?
最佳答案
Integer.toBinaryString
的文档状态
无符号整数值是自变量加上2 ^ 32(如果自变量是
负
改用
Integer.toBinaryString(headerArr[bytenumber] & 0xff);
String.format("%8s", s)
永远不会缩短字符串s
。仅当s
少于8个字符时,才添加空格。