将ByteBuffer读入b_array后,我试图将ascii值转换为int。
在执行代码后我期望输出为129 ,因为(b_array []具有ascii代码的十进制等值49,50,59)
有人可以告诉我,我在哪里做错了。我正在做一个0xFF,使其成为java中的无符号值,然后是OR运算来移动字节。
byte[] b_array=new byte[3];
buffer.get(b_array,0,3);
// Contents inside the b_array in ascii code
// b_array[0]=49;
// b_array[1]=50;
// b_array[2]=57;
int value= b_array[2] & 0xFF | (b_array[1] & 0xFF) << 8 | (b_array[0] & 0xFF) << 16;
System.out.println(value);
答案 0 :(得分:6)
您当前的方法是将这三个值有效地视为24位数 - 实际上是0x313239。
听起来你应该将它转换为字符串,然后解析:
String text = new String(b_array, StandardCharsets.US_ASCII); // "129"
int value = Integer.parseInt(text);