当前位置: 首页 > 面试题库 >

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

乐正涵意
2023-03-14
问题内容

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


问题答案:

对于每个字节:

  • 强制转换为int(通过自动扩展byte到,在下一步中发生int
  • 带掩码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


 类似资料:
  • 问题内容: 我有一个用Java创建的字节数组。它代表某些文件的内容。我不知道这个数组的最大大小。它可以是不同的大小。我想将其存储在mysql中。我应该在mysql中使用哪种类型? 问题答案: 使用,, Mysql为列选择正确的类型

  • 当我使用不同的编译器编译这段代码并在十六进制编辑器中检查输出时,我希望在某个地方找到字符串“南希”。 > 输出为,我看不到找到"Nancy"任何地方。 在visual studio(MSVC 1929)中编译相同的代码时,我在十六进制编辑器中看到了完整的字符串: 为什么我在(1)中的字符串中间得到一些随机字节?

  • 问题内容: 给定任意实例,包括运行时生成的实例(磁盘上没有文件),是否有任何方法获取类字节? 问题答案: 通常,这是不可能的。在加载类时,JVM会解析其字节码并将其转换为内部表示形式。此后,JVM可以随意忘记原始字节码,这就是HotSpot JVM真正发生的情况。 但是,对于某些黑客,可以检查内部类表示并将其转换回有效的类文件(尽管它将与原始字节码不同)。在HotSpot JVM中,该过程用于重新

  • 问题内容: 在Node.js中读取二进制文件的最佳方法是什么? 我正在寻找访问“标头”中的特定字节(少于前100个字节)或逐字节读取文件的方法。 问题答案: 这是-ing由以下命令返回的文件描述符的前100个字节的示例:

  • 问题内容: 假设我在php中有一个字符串,它会输出到这样的文本文件中: nÖ§9q1Fª£ 如何将其字节码而不是时髦的ascii字符保存到我的文本文件中? 问题答案: 使用ord函数 http://ca.php.net/ord 例如。

  • 问题内容: 尽管有很多相关的问题,但找不到与我的问题相符的问题。我想将二进制字符串(例如,)更改为字节数组(相同的示例,)。 我尝试了这个: 但是我得到了: 在Python 3中执行此操作的正确方法是什么? 问题答案: 这是Patrick提到的第一种方法:将位串转换为int并一次取8位。这样做的自然方法是按相反的顺序生成字节。要获得字节放回我的字节组使用扩展切片标志为-1的一步正确的顺序:。 显然