我有一个以已知方式转换为字符串的字节数组。
public String getValueString(byte[] data) {
StringBuilder result = "";
for(int i = 0; i < data.length; i++) {
result.append(String.format("%02X", data[i]));
}
return result.toString;
}
我正在寻找将String转换为字节数组的方法。
实际上,字节数组是UUID,但它以奇怪的方式和方法表示
UUID.nameUUIDFromBytes(byte[] data)
在我的情况下不起作用。
答案 0 :(得分:3)
这是非常简单易用的尝试:
byte[] data = string.getBytes();
byte[] data = string.getBytes(Charset.forName("UTF-8"));
将字节数组转换为UIID:
ByteBuffer bb = ByteBuffer.wrap(inputByteArray);
long firstLong = bb.getLong();
long secondLong = bb.getLong();
return new UUID(firstLong, secondLong);
怎么样:
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));
}
data
是你的字节数组。
答案 1 :(得分:1)
这是一种将十六进制数转换回字节的方法:
String str = "4FDD3A";
byte[] bytes = new byte[str.length()/2];
for (int i = 0; i < str.length(); ++i) {
if ((i+1)*2 <= str.length()) {
bytes[i] = (byte) Integer.parseInt(str.substring(i*2, (i+1)*2), 16);
}
}
for (byte b: bytes) {
System.out.format("%02x\n", b);
}