Java将ASCII值的字节数组转换为int

时间:2014-10-30 20:11:57

标签: java byte bytearray operator-keyword

将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);

1 个答案:

答案 0 :(得分:6)

您当前的方法是将这三个值有效地视为24位数 - 实际上是0x313239。

听起来你应该将它转换为字符串,然后解析:

String text = new String(b_array, StandardCharsets.US_ASCII); // "129"
int value = Integer.parseInt(text);