有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java字节到整数

我正在尝试将字节转换为整数。我所做的所有搜索都使用byte[],我假设它是任意数组。我想转换F字节(不是下面显示的b),但它给出了更改错误:不适用于参数

    byte F;
    mmInStream.read(packetBytes);            

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

这是我在其中一个站点上找到的一个字节到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) 个答案

  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. # 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个字节。所以,这就是为什么在internet上找到的方法使用字节数组的原因。它们假设您传递一个4字节的数组,该数组将被缝合在一起形成一个int

  3. # 3 楼答案

    如果b是无符号的

    int i = b & 0xff;