我有字節數組組成的十六進制值的像CA ,FA,21,33
如何在Java中將字節數組轉換爲hexString?
但我想它們列JList
作爲一個單一的元素CAFA2133
。 爲了列出他們在JList我認爲我需要將它轉換爲string
。 那麼有什麼建議?
我有字節數組組成的十六進制值的像CA ,FA,21,33
如何在Java中將字節數組轉換爲hexString?
但我想它們列JList
作爲一個單一的元素CAFA2133
。 爲了列出他們在JList我認爲我需要將它轉換爲string
。 那麼有什麼建議?
你需要看看String.format()和Formatter規範。
例如
String.format("%02x", byteValue);
迭代通過陣列,並且每個String.format()
結果附加到StringBuilder
您可以使用Integer.toStringint i, int radix)
將每個數字轉換爲十六進制的字符串,然後將它們連接在一起。現在你只需要將你的字節變成一個int。
如何:
public static String bytesToHex(byte[] bytes) {
final char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] hexChars = new char[bytes.length * 2];
int v;
for (int j = 0; j < bytes.length; j++) {
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
參見Integer
的toHexString
。 將您的byte
轉換爲int
,然後獲取結果字符串應該做的伎倆。 當然,您必須將字符串與StringBuilder
連接。
如果此數組長度爲4個字節,則可以連接字節並使用Integer.toString(int,int)方法。
byte[] array = /* initialization */;
int x = 0;
for (int i = 0, l = Math.min(array.length, 4); i < l; i++) {
x <<= 8;
x |= (array[i] & 0xFF);
}
String hex = Integer.toString(x, 16);
public static String bytesToHex(byte[] in) {
final StringBuilder builder = new StringBuilder();
for(byte b : in) {
builder.append(String.format("%02x", b));
}
return builder.toString();
}
此方法應該做的字節數組作爲參數,以返回十六進制字符串中you..pass ...
private static String convertToHexString(byte[] data) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}
希望幫助..
import java.util.HashMap;
public class NumUtil
{ private static HashMap<Byte,char[]>byteToHex=new HashMap<Byte, char[]>();
static
{ for(int i=0;i<16;++i)
byteToHex.put((byte)i, new char[]{'0',Integer.toHexString(i).charAt(0)});
for(int i=16;i<256;++i)
byteToHex.put((byte)i, Integer.toHexString(i).toCharArray());
}
public static String toHexString(byte[]bytes)
{ StringBuilder stringBuilder = new StringBuilder(bytes.length*2);
for(byte b:bytes)
stringBuilder.append(byteToHex.get(b));
return stringBuilder.toString();
}
}
謝謝你的工作! – hiii 2013-03-15 11:43:28
不錯,簡單。沒有必要通過對另一個重複問題和答案的文本牆進行篩選:) – andrei 2015-03-20 22:53:16
它的工作原理,但它比基於字節操作的下面的方法需要大約3倍 – darkled 2016-08-16 14:16:31