如何在 Java 中将文件读取为字节?
需要注意的是所有字节都必须是正数,即不能使用负数范围。
这可以用 Java 完成吗?如果可以,怎么做?
我需要能够将一个文件的内容乘以一个常数。我假设我可以将字节读入 BigInteger 然后相乘,但是由于一些字节是负数,我最终得到 12 13 15 -12 等并卡住了。
最佳答案
嗯,Java 没有无符号字节的概念……byte
类型总是有符号的,值从 -128 到 127(含)。然而,这将与其他使用无符号值的系统很好地互操作,例如,写入字节“255”的 C# 代码将生成一个文件,其中相同的值在 Java 中被读取为“-1”。小心点,你会没事的。
编辑:您可以使用位掩码非常轻松地将有符号字节转换为具有 unsigned 值的 int
。例如:
byte b = -1; // Imagine this was read from the file
int i = b & 0xff;
System.out.println(i); // 255
使用 int
进行所有运算,然后在需要再次写出时转换回 byte
。
您通常使用 FileInputStream
从文件中读取二进制数据或者可能 FileChannel
.
目前很难知道您还在寻找什么...如果您能在问题中提供更多详细信息,我们也许能为您提供更多帮助。
关于java - 如何在 Java 中将文件读取为无符号字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144080/