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

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

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


湖上湖
浏览 589回答 2
2回答

长风秋雁

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

精慕HU

经过不断尝试,无法解析.&nbsp;@Test&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;test9(){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;date=new&nbsp;Date(1531910014000L); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(date); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;@Test&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;test10(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;strs=new&nbsp;String[]{"7D","17","4F","5B"};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;lng=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i<strs.length;i++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lng+=Integer.valueOf(strs[i],&nbsp;16)&nbsp;*&nbsp;Math.pow(256,&nbsp;Math.abs(i)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lng*=1000; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(lng); &nbsp;&nbsp;&nbsp;&nbsp;}test10输出:1531910014000test9输出:Wed Jul 18 18:33:34 CST 2018
打开App,查看更多内容
随时随地看视频慕课网APP