如何获取存储在字节数组中的字节的二进制值
我正在开发一个项目,将文件中的数据转换为字节数组,并将“0”添加到该字节数组,直到字节数组的长度为224位。 我能够添加零,但我无法确认多少零是足够的。 所以我想以二进制格式打印字节数组中的文件数据。 谁能帮我?
对于每个字节:
- 强制转换为
int
(通过自动扩展byte
到int
,在下一步中发生) - 按位-AND,掩码255将除最后8位之外的所有值都归零
- 按位或与256一起将第9位设置为1,使所有值精确为9位长
- 调用
Integer.toBinaryString()
以生成9位字符串 - 调用
String#substring(1)
来“删除”前导“1”,只留下8个二进制字符(前导零,如果有的话,完整)
代码是:
byte[] bytes = "\377\0\317\tabc".getBytes(); for (byte b : bytes) { System.out.println(Integer.toBinaryString(b & 255 | 256).substring(1)); }
上述代码的输出(总是8位宽):
11111111 00000000 11001111 00001001 01100001 01100010 01100011
尝试Integer.toString(bytevalue,2)
好吧,BinaryString来自哪里? 不妨使用它。
首先用0s初始化字节数组:
byte[] b = new byte[224]; Arrays.fill(b, 0);
现在只需用数据填充数组即可。 任何剩余字节都是0。