public static int byteToint(byte[] b)
{
    int s = 0;
    for (int i = 0; i < 3; i++)
    {
      if (b[i] >= 0)
        s = s + b[i];
      else
       s = s + 256 + b[i];
      s = s * 256;
    }
    if (b[3] >= 0)
      s = s + b[3];
    else
      s = s + 256 + b[3];
    return s;
}
           请一步一步解释,谢谢

解决方案 »

  1.   

    就是那个乘以256可能有特殊业务要求 否则就是按unsigned byte叠加规则
      

  2.   

    从最高的8位读起,如果大于0,则直接+上该8位的值,如果小于0,则需取补码,于是加上256。
    一个int有4个byte,只有最后一个byte不用*256。
    不明白再问。
      

  3.   

    那么byte[] b 会装些什么样的数据?能举例一下吗?如byte[] b=?
      

  4.   

    电脑中数据都是二进制,对吧,那么byte[]就相当于把这些二进制按8位8位的封装起来,
    所以,byte[]可以装所有类型的数据。
      

  5.   

    public static int byteToInt(byte[] b)
    {
    if(b.length < 4 || b.length > 4)
    {
    return 0;
    }else
    {
    return (int )( ( ( b[0]  & 0xff ) << 24) 
    | ((b[1] & 0xff ) << 16  )
    | ((b[2] & 0xff)  << 8 ) 
    |  (b[3] & 0xff) ) ;
    }
    }
      

  6.   

    如果有强制转换的话 任何Integral型都可以
    值==originalValue%(2^8)
      

  7.   

    这是一个SQL解释器程序数字转换的方法