2012-09-12 92 views
0

我有過與字符串>字節 - >轉換問題的byte []字符串字節,然後的byte [] 0xformat

我迄今所做的:

 double db = 1.00; 
    double ab = db*100; 
    int k = (int) ab; 

    String aa = String.format("%06d", k); 

    String first = aa.substring(0,2);`` 
    String second = aa.substring(2,4); 
    String third = aa.substring(4,6); 

    String ff = "0x"+first; 
    String nn = "0x"+second; 
    String yy = "0x"+third; 

我想寫那些字節轉換爲字節[]。我的意思是:

byte[] bytes = new byte[]{(byte) 0x02, (byte) 0x68, (byte) 0x14, 
    (byte) 0x93, (byte) 0x01, ff,nn,yy}; 

按照這個順序和鑄造與0x的。任何幫助都很受歡迎。

問候, 阿里

回答

1

您可以使用Byte.decode()

將一個字符串譯碼爲一個字節對象。接受十進制,十六進制,並通過以下語法給出的八進制數:

DecodableString: 
    Signopt DecimalNumeral 
    Signopt 0x HexDigits 
    Signopt 0X HexDigits 
    Signopt # HexDigits 
    Signopt 0 OctalDigits 

下面的代碼將打印1011這是0XA值,0XB

byte[] temp = new byte[2]; 
    temp[0] = Byte.decode("0xA"); 
    temp[1] = Byte.decode("0xB"); 
    System.out.println(temp[0]); 
    System.out.println(temp[1]); 
+0

是否將我的字符串解碼爲字節?我的意思是這些字符串真的是我想要的。 –

+0

實際上,我的項目沒有將它們再次轉換爲字節。我只是想把這些字符串放在bytearray中。而已。 –

+0

所以你的意思是你想再次將它從字節轉換爲十六進制?如果你想再次使用String,那麼你可以使用'Integer.toHexString()' –

1

依我之見,主要這裏的問題是如何將表示六進制數字的2個字符串轉換爲字節類型。 Byte類有一個靜態方法parseByte(String s,int radix),它可以使用所需的基數(在本例中爲16)將String解析爲數字。這裏是一個如何解析並將結果保存在字節數組中的示例:

public static void main(String [] args){ 
    System.out.println(Arrays.toString(getBytes("0001020F"))); 
} 


public static byte[] getBytes(String str) { 

    byte [] result = new byte[str.length()/2]; //assuming str has even number of chars... 

    for(int i = 0; i < result.length; i++){ 
     int startIndex = i * 2; 
     result[i] = Byte.parseByte(str.substring(startIndex, startIndex + 2), 16); 
    } 
    return result; 
} 
+0

請考慮添加一些關於你的代碼在做什麼的小解釋(參見http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)。 – codeling

+0

對不起,我只是添加了一個解釋 – Roger

相關問題