4字节长整型,如何转变为java的long数字?

如: 7D 17 4F 5B
这是一个时间字节。

大概应该是 1531881242100 才得到当前的时间截。但是,我解码出来,总是数字不对。
这是从modbus里读取来的数据。
反正,高低位,转换来转换去,就是时间不对。如何求解?
以上得出一个 long值,然后用SimpleDateFormat 转为 时间格式的内容。

阅读 3.1k
2 个回答

把hex转换为long就可以了,代码就不贴了。你这个四字节是32位,而long是64位,所以你应该是少算了4个字节。

经过不断尝试,无法解析.

    @Test
    public void test9(){
        Date date=new Date(1531910014000L);
        System.out.println(date);
    }
    
    @Test
    public void test10(){
        String[] strs=new String[]{"7D","17","4F","5B"};
        long lng=1;
        for(int i=0;i<strs.length;i++){
            lng+=Integer.valueOf(strs[i], 16) * Math.pow(256, Math.abs(i));
        }
        lng*=1000;
        System.out.println(lng);
    }

test10输出:1531910014000
test9输出:Wed Jul 18 18:33:34 CST 2018

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题