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

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个字符时,才添加空格。

09-27 08:25