java - 如何使用 Java RandomAccessFile 从文件中正确读取字节?
问题描述
我有一个字节为 88(十进制为 136)的二进制文件。
我正在使用 Java 的 RandomAccessFile 类和“读取”方法通过预定义的缓冲区读取此字节。我也尝试了“readUnsignedByte()”,但得到了与下面相同的问题。
RandomAccessFile randomAccessFile = new RandomAccessFile(inputFile, "r");
byte[] headerBuffer = new byte[32];
randomAccessFile.read(headerBuffer);
上面的代码给我 -120 表示 88,而不是 136。
我意识到高位或任何设置,但我仍然需要能够读取文件并获得 88 或 136。
问题是这个字节是二进制文件的偏移量,我可以在其中找到第一条记录,因此负数不起作用。
将不胜感激的建议。
谢谢,
解决方案
您可以使用该Byte.toUnsignedInt
方法以“无符号”方式将 abyte
转换为a。int
jshell> byte b = (byte) 0x88;
b ==> -120
jshell> Byte.toUnsignedInt(b);
$57 ==> 136
该操作与按位运算符相同b & 0xff
但不调用幻数或知识。
推荐阅读
- jenkins - 如果自上次提交以来某个目录中的任何文件已被修改(不是 FS 触发器),让 Jenkins 执行构建步骤
- swiftui - 如何为 SwiftUI 制作滑动手势?
- c# - 数据表计算时,对象不能从 DBNull 转换为其他类型
- python - 使用另一个列表将列表解压缩到单独的列表中
- gekko - Gekko的工业应用
- bash - 在 MacOS 上的 bash 脚本中使用关联数组
- r - 如何对包含数字的字符向量进行排序
- docker - Hazelcast 分布式缓存是否适用于 Docker Swarm
- mongoose - 猫鼬的连接是特定于版本的吗?
- java - 管理 ImageIcons 的 Java 最佳实践