gpt4 book ai didi

java - 将字节写入文件然后读取会产生不同的字节

转载 作者:行者123 更新时间:2023-12-01 11:36:29 24 4
gpt4 key购买 nike

我有一个程序需要从文件中读取和写入 RGB 值。但是,我在应用程序中遇到了一个问题,即我从文件读回的数据与我写入的数据不同。

程序:

public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream(new File("ASDF.txt"));
fos.write(0xFF95999F);
fos.flush();
fos.close();
FileInputStream fis = new FileInputStream(new File("ASDF.txt"));
byte read;
while((read = (byte) fis.read()) != -1) {
System.out.print(String.format("%02X ", read));
}
fis.close();
}

输出:

9F

最佳答案

一个字节是 8 位,这意味着它最多可以存储 255 个(如果有符号则为 128 个)。当您调用 fos.write(0xFF95999F) 时,它会将其转换为一个字节,这意味着它会删除除最后两个数字(十六进制)之外的所有数字。如果您需要写入多个字节,您将需要将整数转换为字节数组。正如 a related SO article 中所建议的,类似

ByteBuffer b = ByteBuffer.allocate(4);
//b.order(ByteOrder.BIG_ENDIAN); // optional, the initial order of a byte buffer is always BIG_ENDIAN.
b.putInt(0xFF95999F);

byte[] result = b.array();
fos.write(result);
...

应该更适合你。 (为什么 FileOutputStream 采用 int 而不是 byte 我无法回答,但我想这与某些获取列表(想到 getCookie )的 Java 方法返回 null 而不是空列表的愚蠢原因相同......为时过早他们现在所坚持的优化。)

关于java - 将字节写入文件然后读取会产生不同的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com