gpt4 book ai didi

java - 将输入写入二进制文件并将其作为 int 读回(取回十进制值)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:57 27 4
gpt4 key购买 nike

像这样写入二进制文件时:

byte[] content = {1,2,3};
FileOutputStream output = new FileOutputStream("data.bin");
DataOutputStream fileName = new DataOutputStream(output);
fileName.writeInt(content.length);
for (int i = 0; i < content.length; i++)
{
fileName.writeInt(content[i]);
System.out.println(content[i]);
}
fileName.close();

当使用 FileInputStream/DataInputStream 和 .readInt() 读回时一切正常。(如果我使用 .skip(4); 因为第一个似乎包含一个值,它是写入的位数)

但是,如果使用scanner将byte[]内容替换为input。

java.util.Scanner in = new java.util.Scanner(System.in);
String inputAsString = in.nextLine();
byte[] content = inputAsString.getBytes();

我注意到它是以十进制形式写入二进制文件的。 1 变成 49,2 变成 50,3 变成 51 ...我的问题是如何将它读回 1、2、3,就像使用硬编码字节数组的第一个示例一样。

最佳答案

当您从输入中读取数据时,它是一个字符串。所以你得到的是 ascii/utf-x 字节。所以你写的值是字节。您想将读取的输入转换为 int:

int toWrite = parseInt(inputAsString);
fileName.writeInt(toWrite);

请注意,51 是分配给字符“3”的 ascii 值

如果你把它写成一个整数,你应该也能读入它。

关于java - 将输入写入二进制文件并将其作为 int 读回(取回十进制值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726010/

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