如何在java中将ASCII转换为十六进制值。
例如:
ASCII:31 32 2E 30 31 33
十六进制:12.013
答案 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);