为什么字节以不同大小打印为位数组

时间:2018-10-07 01:46:07

标签: java bit-manipulation

我想以位字符串形式打印我的字节。我找到了方法

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

如何接收不同的位字符串表示形式?

1 个答案:

答案 0 :(得分:1)

Integer.toBinaryString的文档

  

无符号整数值是参数,如果参数是2 ^ 32   否定

改为使用

Integer.toBinaryString(headerArr[bytenumber] & 0xff);

String.format("%8s", s)永远不会缩短字符串s。仅当s的字符数少于8个时,才添加空格。