Java字符串到字节。为什么价值会发生变化?

时间:2014-05-13 09:43:07

标签: java

我有以下方法,我在String中设置值“9”。当我把它放在字节中并显示输出时,值就会改变。

void method() {
    String s = "9";
    byte[] b = s.getBytes();
    System.out.println("Byte value is: " + byte[0]);
}

输出:

Byte value is: 57

为什么9会被转换为57?

4 个答案:

答案 0 :(得分:3)

因为字符'9'是ASCII值57:

https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html

ASCII字符9将是“制表符”

答案 1 :(得分:2)

57是字符' 9'

的ASCII码

答案 2 :(得分:0)

当你试图从字符中获取字节值时,你只得到ASCII值。

字符' 9' ASCII码是57

答案 3 :(得分:0)

在上面的示例中,您需要首先纠正编译问题: 代码应该是:

 System.out.println("Byte value is: " + b[0]);

而不是

 System.out.println("Byte value is: " + byte[0];

关于输出,你正在分配" 9"作为字符串并尝试获取byte [],基本上getBytes使用平台的默认字符集将此String编码为字节序列,将结果存储到新的字节数组中。因此你得到" 57"。