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

问题描述:

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

例如:

ASCII:31 32 2E 30 31 33

十六进制:12.013

+2

“六角:12.013”?.. – cherouvim 2010-04-26 05:24:08

+0

@cherouvim:'0X31 == 49'和ASCII 49''1''。 – polygenelubricants 2010-04-26 05:51:10

+0

@polygenelubricants:感谢您的破译。这个问题还不清楚。 – cherouvim 2010-04-26 06:26:09

这不是完全清楚你的要求,因为你的 “十六进制” 字符串实际上是十进制。我相信你正在尝试使用一个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 "