Java 字符串到字节的转换问题

标签 java string bytearray ascii

我有一些测试代码没有按预期工作,在查看了各种站点和规范后我仍然无法弄清楚发生了什么。

这是我的测试代码:

byte[] b = new byte[8];
b[0] = (byte)0x72;
b[1] = (byte)0x3A;
b[2] = (byte)0x60;
b[3] = (byte)0x01;
b[4] = (byte)0x0E;
b[5] = (byte)0x10;
b[6] = (byte)0x8A;
b[7] = (byte)0x11;
String bitmapStr = new String(b);
try {
    b = bitmapStr.getBytes("US-ASCII");
} catch (Exception ex) {
    ex.printStackTrace();
}
System.out.println("DEBUG: bitmapStr = \"" +bitmapStr + "\"");
for (int i=0; i<=7; i++) {
    int byte1 = b[i];
    System.out.println("byte"+i + ": " + Integer.toHexString(byte1));
}

当我运行程序时,我在控制台输出中得到以下内容:

DEBUG: bitmapStr = "r:`�"
byte0: 72
byte1: 3a
byte2: 60
byte3: 1
byte4: e
byte5: 10
byte6: 3f
byte7: 11

看看我的字节数组中的 byte6 即 b[6] 如何输出 0x3F,但它应该是 0x8A。

有什么想法吗?

顺便说一句,如果我使用 UTF-8 编码,我会得到一个更古怪的输出(尽管 ASCII 是正确的)。

UTF-8字符串编码输出:

byte0: 72
byte1: 3a
byte2: 60
byte3: 1
byte4: e
byte5: 10
byte6: ffffffef
byte7: ffffffbf

最佳答案

尝试另一种形式的 String 构造函数:

String bitmapStr = new String(b,"ISO-8859-1");

关于Java 字符串到字节的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13459411/

相关文章:

java - 发送嵌入 SOAP 消息中的 XML 数据的最佳实践是什么?

java - 无法从 Servlet 在本地文件系统上找到文件

javascript - HTML - 使用 javascript 从文本字段保存数据

Android/Java : Saving a byte array to a file (. jpeg)

database - 将 Matlab 数组存储在 SQL Server varbinary 字段中

java - 如何重新启动程序

java - Eclipse Juno - package-info.java 有什么用?

ios - 连接 2 个字符串(或数组)

C++ 无法使用 vector<string> 作为返回类型

java - 在 InputStream 中过滤(搜索和替换)字节数组