如何在Java中将ASCII转换为十六进制值

6

如何在Java中将ASCII转换为十六进制值。

例如:

ASCII:31 32 2E 30 31 33

十六进制:12.013


@cherouvim:0x31 == 49,而 ASCII 49 是 '1' - polygenelubricants
@polygenelubricants:感谢您的解密。问题不太清楚。 - cherouvim
2个回答

9
你没有将ASCII转换为十六进制值。你的十六进制值是以“char”形式存在的,你想将其转换为“String”。这是我理解你的问题的方式。
    String s = new String(new char[] {
        0x31, 0x32, 0x2E, 0x30, 0x31, 0x33
    });
    System.out.println(s); // prints "12.013"

如果你有一个字符串,想要将其char以十六进制打印出来,那么可以按照以下方法进行:

    for (char ch : "12.013".toCharArray()) {
        System.out.print(Integer.toHexString(ch) + " ");
    } // prints "31 32 2e 30 31 33 "

您也可以使用%H格式字符串:
    for (char ch : "12.013".toCharArray()) {
        System.out.format("%H ", ch);
    } // prints "31 32 2E 30 31 33 "

4

由于您的“hex”字符串实际上是十进制的,因此不太清楚您的问题。我认为您正在尝试获取表示双精度浮点数的ASCII字符串的值,并将其转换为双精度浮点数形式,在这种情况下,使用Double.parseDouble应该足够满足您的需求。如果您需要输出双精度浮点数值的十六进制字符串,则可以使用Double.toHexString。请注意,每当调用原始包装器类的解析函数时,您需要捕获NumberFormatException

byte[] ascii = {(byte)0x31, (byte)0x32, (byte)0x2E, (byte)0x30, (byte)0x31, (byte)0x33};
String decimalstr = new String(ascii,"US-ASCII");
double val = Double.parseDouble(decimalstr);
String hexstr = Double.toHexString(val);
以上代码用于将一个字节数组转换成对应的十进制小数,并将其转换成十六进制字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接