不用位移,试试memcpy吧
以下代码没有测试,仅供参考:
byte xl[4] = {0x10, 0x20, 0x30, 0x40};
long x = 0;
memcpy(&x, xl, 4);
没有试,不知道行不行

解决方案 »

  1.   

    包子,你说的把byte[]转为long,是什么意思啊?举个例子吧~
      

  2.   

    比如我在做一个网络通讯工具,得到一个4为的byte:
    byte[] x1 = new byte[4];
    该通信协议规定这个4位byte是一个long
    long x;
    就是怎样把x1 的值转为x
      

  3.   

    需要注明的是,该通讯协议可能是对c++写的,这32位应该是无整型int,所以我要用long
      

  4.   

    这样一个思路,不知道行不行:
    初始量是:
    byte[] x1 = {1,2,3,4};
    long x = 0;
    我们要的结果是:
    x的值为1234(壹千贰佰叁拾肆)。对吧!思路为:x = 1*10*10*10 + 2*10*10 + 3*10 + 4;
      

  5.   

    最简单的,使用Buffer操作:
    ByteBuffer buffer=ByteBuffer.allocate(4);
    buffer.put(new byte[]{0,0,1,1});
    buffer.flip();
    int intValue=buffer.getInt();
    System.out.println(intValue);
    那么数据为
    0000 0000 
    0000 0000 
    0000 0001
    0000 0001
    ,所以结果为257
      

  6.   

    想不通为什么不用移位。
    long l = 0;
    byte bs[]={0xf,0xf,0xf,0xf};
    l=bs[0]|(bs[1]<<4)|(bs[2]<<8)|(bs[3]<<12);
    这样多方便啊
      

  7.   

    shangqiao(伤桥(千万不要理解为我可怜桥,是“伤心桥下”的缩写) :
    用int就是不行因为对方是无符号整形,只有用long
      

  8.   

    cooled(青山依旧) 
    移位移错了?是不是应该每个移8位阿?