如何将ASCII转换为java中的十六进制值
答
这不是完全清楚你的要求,因为你的 “十六进制” 字符串实际上是十进制。我相信你正在尝试使用一个ASCII字符串表示一个double,并以double的形式得到它的值,在这种情况下,使用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);
答
您没有将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 "
“六角:12.013”?.. – cherouvim 2010-04-26 05:24:08
@cherouvim:'0X31 == 49'和ASCII 49''1''。 – polygenelubricants 2010-04-26 05:51:10
@polygenelubricants:感谢您的破译。这个问题还不清楚。 – cherouvim 2010-04-26 06:26:09