2013-01-07 50 views
0

的陣列I有11個字節"0017333032CD4900186F41"一個十六進制字符串。我必須將此字符串轉換爲一個字節數組,我做得很好,並得到正確的結果。但是,遵循特定的消息格式,我想將此十六進制字符串轉換爲大小爲16而不是11的字節數組。這可能嗎?轉換11字節的十六進制字符串字節大小16

我試圖hex.getBytes("UTF-8"),這給了我32大小的數組是否有可能有一個11字節的十六進制字符串作爲16的字節數組?

這個要求是在Java中的黑莓應用程序。這已經在Android和iPhone中成功實施。 Android是利用所述ByteConverter IIb的在Basic4Android以獲得所需的結果:

Dim data() As Byte 
data = Bconv.HexToBytes(data_hex) 
+0

@Grishu, '11個字節 「0017333032CD4900186F41」 十六進制字符串' 不是代碼。編輯問題時,請不要將正常文本突出顯示爲代碼。 – Mischa

回答

3

十六進制字符串表示具有2位數字(16²= 256)字節。

如此填充字符串data_hex到零的權利,直到它具有2 * 16 = 32的長度。 然後執行HexToBytes轉換。

1

嘗試

String s = "0017333032CD4900186F41"; 
BigInteger bi = new BigInteger(s, 16); 
byte[] a1 = bi.toByteArray(); 
byte[] a2 = new byte[16]; 
System.arraycopy(a1, 0, a2, 16 - a1.length, a1.length); 
+0

謝謝,但我無法在我的BlackBerry應用程序代碼中嘗試此操作,因爲BigInteger不在此處的任何庫中。 – Sarah

相關問題