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

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

对于每个字节:

  • 强制转换为int (通过自动扩展byteint ,在下一步中发生)
  • 按位-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。