2014-11-06 82 views
0

我想將十進制-10值轉換爲十六進制字符串和字節數組格式。如何將十六進制值轉換爲字符串和字節數組

我已經試過

String minHex = Integer.toHexString(Integer.valueOf(-10)); 
System.out.println(minHex); 

導致fffffff6,我認爲這是不正確的。而對於將字節數組我使用下面的函數這是我從

Convert a string representation of a hex dump to a byte array using Java?

public static byte[] hexStringToByteArray(String s) { 
     int len = s.length(); 
     byte[] data = new byte[len/2]; 
     for (int i = 0; i < len; i += 2) { 
      data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) 
           + Character.digit(s.charAt(i+1), 16)); 
     } 
     return data; 
} 

所以還不能肯定它會爲零下十六進制值或無法找到工作。

+0

你的結果是二進制補碼形式 - 這樣做(0000 0000 0000 0000 0000 0000 0000 1010)考慮一個32位整數的二進制數。現在取所有數字的倒數(1111 1111 1111 1111 1111 1111 1111 0101),並將結果加1。你會得到你fffffff6以上的東西。它已簽署。 – ha9u63ar 2014-11-06 12:29:57

回答

0

要一個十六進制轉換爲String你希望它即-10轉換爲-a的方式,使用:

String hex = Integer.toString(-10, 16); 

要轉換爲byte陣列,只需轉換intbyte陣列,它是用相同的方式表示:

byte[] bytes = ByteBuffer.allocate(4).putInt(-10).array(); 
+0

謝謝讓。但byte [] bytes = ByteBuffer.allocate(4).putInt(-10).array();會給整數-10的字節表示,但我想要十六進制-10的字節表示。該怎麼做? – commit 2014-11-06 12:40:50

+0

完全一樣。 – 2014-11-06 12:42:41

相關問題