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

时间:2010-04-26 05:18:05

标签: java

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

例如:

  

ASCII:31 32 2E 30 31 33

     

十六进制:12.013

2 个答案:

答案 0 :(得分:8)

您没有将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 "

答案 1 :(得分:4)

你问的是什么并不完全清楚,因为你的“十六进制”字符串实际上是十进制的。我相信您正在尝试使用表示double的ASCII字符串并以double的形式获取其值,在这种情况下,使用Double.parseDouble应该足以满足您的需要。如果需要输出double值的十六进制字符串,则可以使用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);