字节到整数

时间:2013-09-11 14:49:00

标签: java

我正在尝试将一个字节转换为整数。我所做的所有搜索都使用byte [],我假设它是任何数组。我想转换F字节(不是如下所示的b),但它会改变错误:不适用于参数。

    byte F;
    mmInStream.read(packetBytes);            

    b [counter]= packetBytes[0];             
    F=b [counter];
    counter++;
    temp = byteToInt(b); //Convert byte to int

这是我在其中一个网站上找到的一个字节To Int。

    private int byteToInt(byte[] b) {

        int value= 0;
    for(int i=0;i<b.length;i++){                
        int n=(b[i]<0?(int)b[i]+256:(int)b[i])<<(8*i);             
    value+=n;
   }         
   return value; 

    }

3 个答案:

答案 0 :(得分:2)

简单地说:

byte b = ...;
int signedInt = b; // For negative bytes, resulting in negative ints
int unsignedInt = 0xFF & b; // For negative bytes, resulting in positive ints

仅供参考:int是4个字节。因此,这就是您在互联网上找到的方法使用字节数组的原因。他们假设你传递一个4字节的数组,它将被拼接在一起形成一个int。

答案 1 :(得分:1)

你可以用这个:

int i = 234;
byte b = (byte) i;
System.out.println(b); // -22
int i2 = b & 0xFF;
System.out.println(i2); // 234

或者这个也是:

public static byte[] intToByteArray(int a)
{
byte[] ret = new byte[4];
ret[3] = (byte) (a & 0xFF);   
ret[2] = (byte) ((a >> 8) & 0xFF);   
ret[1] = (byte) ((a >> 16) & 0xFF);   
ret[0] = (byte) ((a >> 24) & 0xFF);
return ret;
}

public static int byteArrayToInt(byte[] b)
{
return (b[3] & 0xFF) + ((b[2] & 0xFF) << 8) + ((b[1] & 0xFF) << 16) + ((b[0] & 0xFF) << 24);
}

答案 2 :(得分:0)

如果b是无符号的

int i = b & 0xff;