java - 将 Java byte[] 解释为字符串

标签 java encoding type-conversion

我有一个字节数组 b:

b = [-98, -99]

我需要将这段数据传递给一个函数。该函数接受一个字符串(这是不可更改的)。如何让 Java 将 b 中的原始二进制数据解释为字符串而不更改 b 中的任何位

编辑

这不是重复:

Converting byte array to String (Java)

因为,数组b由位[1001 1110 1001 1101]或[9E9D]组成。如果我使用

String str = new String(b, "Cp1252")

Cp1252 编码没有位序列 1001 1101 或 9D 的值。所以这个函数的结果是 str = "ž?"。二进制形式为 [1001 1110 0011 1111] 或 [9E3F]。请注意,该函数更改了我的位,这实际上损坏了我的数据。

我认为这可以在 C++ 中使用重新解释强制转换来完成,但在 java 中不存在这样的事情。提前致谢。

最佳答案

您可能需要类似 new String(b, "charset")); 的内容,其中 charset 被您要使用的编码替换。我建议使用 UTF-8,除非您的值不是有效的 UTF-8。

关于java - 将 Java byte[] 解释为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847044/

相关文章:

JavaFx JFoenix Java9

android - 为什么在 Android 2.3 上通过短信发送时 "@"被转换为 "¿"?

c - 固定宽度、最小宽度和最快最小宽度无符号 8 位整数

c++ - 从 __int64 到 size_t 的安全转换

java - 在 SQLite 数据库中实现引用计数之类的东西

java - 使用 Chudnovsky 算法计算圆周率时出错 - Java

forms - 方法 = "OST"?

java - Spring MVC 类型转换 : PropertyEditor or Converter?

java - Selenium2 配置文件接受不受信任的证书

php - 正则表达式、编码和看起来相似的字符