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

问题描述 投票:7回答:4

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

java
4个回答
22
投票

对于每个字节:

  • 广播到int(在下一步中通过自动将byte扩展到int)]
  • 带掩码255的按位与,除最后8位外,其余全部为零
  • 与256进行按位或运算,将第9位设置为1,使所有值均精确为9位长]
  • 调用Integer.toBinaryString()以产生9位字符串
  • 调用Integer.toBinaryString()以“删除”前导“ 1”,仅保留8个二进制字符(带有前导零,如果有的话,保持不变)

代码为:

String#substring(1)

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

byte[] bytes = "\377\0\317\tabc".getBytes();
for (byte b : bytes) {
    System.out.println(Integer.toBinaryString(b & 255 | 256).substring(1));
}

2
投票

尝试11111111 00000000 11001111 00001001 01100001 01100010 01100011


0
投票

您可以像下面的示例一样使用BigInteger


-2
投票

首先用0s初始化字节数组:

© www.soinside.com 2019 - 2024. All rights reserved.