我想以位串形式打印我的字节。我找到了方法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
提交
取消