2010-04-26 141 views

回答

4

這不是完全清楚你的要求,因爲你的 「十六進制」 字符串實際上是十進制。我相信你正在嘗試使用一個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); 
7

您沒有將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 "