跪求大家,帮我看看这个问题,谢谢!!!!!!!!!!!!!http://expert.csdn.net/Expert/topic/2633/2633574.xml?temp=.6377375

解决方案 »

  1.   

    对是对的
    但你的byte数组要是16进制的
    而且长度要有8
      

  2.   

    收到你的短信。
    (1) 和16进制或者10进制没有关系。
    (2) 做的不对,这样一个单元测试就可以测试出来了:
        <<
        public void testConversion() {
            byte[] bs = new byte[]{0x01, 0x02, (byte)0xFF, 
                        0x04, 0x05, 0x06, (byte)0xFF, 0x08};        assertEquals(0x0102FF040506FF08L, bytesToLong(bs));
        }
        >>
        把方法修改如下:
        <<
            return ((long)abyte0[0]<<56&0xFF00000000000000L) | ((long)abyte0[1]<<48&0xFF000000000000L) |
                    ((long)abyte0[2]<<40&0xFF0000000000L) | ((long)abyte0[3]<<32&0xFF00000000L) |
                    ((long)abyte0[4]<<24&0xFF000000L) | ((long)abyte0[5]<<16&0xFF0000L) |
                    ((long)abyte0[6]<<8&0xFF00L) | ((long)abyte0[7]&0xFFL);
        >>
    (3) 入口参数的检查是必要的。
        require:
            abyte0 /= void
            abyte0.length = 8
      

  3.   

    你好,收到你的短信。。因为java里面数据处理默认是以int型(32位)为基础的,你移动32位以上的数据就“自动消失了”。错误原因就是这样子。修正就是你强制把要转化的数据转化为long型的就可以了。