所以假设我有两个无符号字节从设备到我的软件:
我可以通过以下方式阅读它们的价值:
int first = buffer[0] & 0xFF;
int second = buffer[1] & 0xFF;
然后如何将这两个数字转换为Java中的int?
简而言之:将无符号字节缓冲区数组转换为int
更多详情:
所以,假设我有一个有符号字节数组,我可以通过这种方式将其转换为int:
int val = ((bytes[0] & 0xff) << 8) | (bytes[1] & 0xff);
但是我应该怎么做才能将无符号字节数组转换为int?
//更新:
想出了转换它的方法:
private int toInt(byte[] b) {
int x = (0 << 24) | (0 << 16)
| ((b[1] & 0xFF) << 8) | ((b[0] & 0xFF) << 0);
return x;
}
答案 0 :(得分:0)
我不知道这是否是你想要的,但你可以这样做:
int b1 = ...; // first byte
int b2 = ...; // second byte
String binaryString = pad0s(Integer.toBinaryString(b1), 8) + pad0s(Integer.toBinaryString(b2), 8);
System.out.println(Integer.valueOf(binaryString, 2));
pad0s
定义为:
private static String pad0s(String str, int length) {
if (str.length() >= length) return str;
int diff = length - str.length();
StringBuilder sb = new StringBuilder(str);
for (int i = 0 ; i < diff ; i++) {
sb.insert(0, "0");
}
return sb.toString();
}