我的函数返回String已经以字节为单位,例如
String ss = Long.toHexString(checksum);
return ss;
现在String ss以字节为单位返回结果;
result is = ff32ge34
这是crc32校验和
现在在下一个方法中我想在byte []
中使用这个字符串例如
byte [] any = ss;
但是因为ss是String所以错误即将来临,但实际上ss String是以字节为单位的校验和,所以我可以在byte []中使用这个字符串吗?
我想要这样
byte[] any = new byte[]{0xff ,0x32 ,0xge,0x34};
答案 0 :(得分:0)
您可以使用此函数将原始长整数转换为字节数组。它比将String转换为字节数组
更简单,也更快public byte[] longToByteArray(long value) {
return new byte[] {
(byte) (value >> 56),
(byte) (value >> 48),
(byte) (value >> 40),
(byte) (value >> 32),
(byte) (value >> 24),
(byte) (value >> 16),
(byte) (value >> 8),
(byte) value
};
}
但是如果你坚持将String转换为字节数组,你可以使用类似的东西
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;
}
但是正如你所看到的,它很丑陋并且比转换长字节数组慢得多。
您可以使用此函数来反转字节数组的顺序
public static void reverse(byte[] data) {
for (int left = 0, right = data.length - 1; left < right; left++, right--) {
// swap the values at the left and right indices
byte temp = data[left];
data[left] = data[right];
data[right] = temp;
}
}