gpt4 book ai didi

java - 如果我将二进制数据转换为字符串并返回,Java 中是否会丢失任何数据?

转载 作者:行者123 更新时间:2023-11-30 07:22:35 30 4
gpt4 key购买 nike

我的 java 程序中有一个消息传递类,它仅使用 String 值,从不使用任何 binary 数据。

我想发送一个 rpm 文件,因此基本上是通过此消息传递类将二进制数据发送到接收器

我知道这可以通过在 messaging 端将binary 数据转换为 String ,然后再转换回 来完成接收端的二进制文件。

但是我的问题是,将我的二进制文件转换为String,然后返回二进制数据另存为,是否会丢失任何数据二进制 文件,或者数据会在所有转换中保留吗?

最佳答案

二进制数据是指byte[]、InputStream、OutputStream。 java 在内部使用 Unicode 来表示文本:String、char、Reader、Writer

因此,应该只转换表示文本的二进制数据,并指定该二进制数据的编码:

byte[] bytes = ...
String s = new String(bytes, StandardCharsets.UTF_8);
bytes = s.getBytes(StandardCharsets.UTF_8);

不应转换非文本数据,因为它对于特定编码可能是非法的,特别是对于多字节编码 UTF-8。此外,转换为 Unicode 会造成不必要的低效率。例如 java char 是两个字节(UTF-16 编码)。

出于某些目的,最好使用ByteArrayInputStream、ByteArrayOutputStream、ByteBuffer。永远不要串。如果很顽固,请使用 StandardCharsets.ISO_8859_1

关于java - 如果我将二进制数据转换为字符串并返回,Java 中是否会丢失任何数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37302662/

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