gpt4 book ai didi

java - java中字节形式的字符串转为原始字符串

转载 作者:行者123 更新时间:2023-12-01 21:18:29 28 4
gpt4 key购买 nike

我编写了一段代码,将 8 个不同的正弦值以字节形式(使用 .getbytes)写入文本文件。

运行后,会创建一个包含以下内容的文件: [B@5f18cd5 [B@1c515979 [B@20c92575 [B@75ba3523 [B@f4c7f77 [B@67446579 [B@3b621fe6 [B@271c537f

到目前为止一切顺利...

我现在想在另一个 Java 项目中反转整个过程。为此,我需要知道如何将 [B@1c515979] 转回其初始值 0.7071。

我尝试使用

System.out.println("Text [Byte Format] : " + bytes.toString());

我希望用它将字节码转换回字符串。但问题是,由于我正在从文本文件中读取数据,所以我猜读取的数据无论如何都是字符串,所以实际上我只是将字符串转换为字符串。

这就是我的现状...有人有想法吗?

感谢您的聆听。

最佳答案

[B@5f18cd5 不是一个字节,它是引用的字符串表示形式。你无法将它们变回任何东西。

public class Ref {
public static void main(final String[] args) {
System.out.println(new Ref());
}
}
//Outputs: Ref@19e0bfd

foo@address 是一个引用。您实际上并未将值写入文件,而是将其作为字符串引用。 B[ 表示您正在将 byte[] 写入文件,而不是该数组中的实际字节。

更新

您可能正在寻找这样的东西:

public static void main(final String[] args) throws FileNotFoundException,
IOException {
final File f = new File("/tmp/output");

final ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream(f));

for (int i = 0; i < 8; i++) {
final double d = Math.sin(i);
System.out.println(d);
oos.writeDouble(d);
}

oos.flush();
oos.close();

System.out.println("---");

final ObjectInputStream ois = new ObjectInputStream(
new FileInputStream(f));

for (int i = 0; i < 8; i++)
System.out.println(ois.readDouble());

ois.close();

}

关于java - java中字节形式的字符串转为原始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39526202/

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