gpt4 book ai didi

java - 使用Java从不同操作系统的字节数组中获取字符串

转载 作者:太空狗 更新时间:2023-10-29 12:01:56 24 4
gpt4 key购买 nike

我正在尝试使用简单的代码将字节数组转换为字符串:

System.out.printf("%s \n", new String(b));

其中 b 包含以下内容(十六进制字符):

32d001000001000000000000246d3639653331697769736374683134633439687763796c7862796f74697167786f786c7504696e666f0000010001

如果我在 Windows 中运行我的代码,我会得到整个解码的 String,但是在 Linux 中它似乎被丢弃直到空字节 (00)。如果我跳过这些字节,则会生成正确的 String

如何在 Linux 操作系统中获得相同的结果?抱歉,由于限制我无法附上图片 :'(

提前致谢!

最佳答案

是的,那是因为您正在使用使用平台默认编码 的构造函数将二进制数据转换为文本。它在不同的平台上创建不同的字符串是完全合理的 - 尽管我怀疑您对 Linux“丢弃直到空字节”的解释是不正确的,并且可能是由于您显示字符串的方式所致。

不要使用平台默认编码 - 或者如果您确实想要它,请明确使用。假设这确实是 文本数据,请指定适当的编码,例如使用 StandardCharsets

但是,如果这是任意二进制数据(例如加密或压缩的结果),那么您根本不应该以这种方式将其转换为字符串 - 您应该使用十六进制或 base64 转换。

关于java - 使用Java从不同操作系统的字节数组中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960215/

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