如何获取存储在字节数组中的字节的二进制值

Pra*_*mod 7 java

我正在开发一个项目,将文件中的数据转换为字节数组,并将"0"添加到该字节数组,直到字节数组的长度为224位.我能够添加零,但我无法确认多少零是足够的.所以我想以二进制格式打印字节数组中的文件数据.谁能帮我?

Boh*_*ian 22

对于每个字节:

  • 施放到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));
}
Run Code Online (Sandbox Code Playgroud)

上述代码的输出(总是8位宽):

11111111
00000000
11001111
00001001
01100001
01100010
01100011
Run Code Online (Sandbox Code Playgroud)

  • 这有时会为我打印七个字符.[这个替代答案](http://stackoverflow.com/a/12310078/474189)适合我. (2认同)