java 16进制转时间问题

爱折腾的小闲余 2021-04-06 04:15:05
现在已知

85 12 6c 60 a9 1e 02 ac => 2020-04-06 15:49:25

0b 13 6c 60 a9 1e 02 ac => 2020-04-06 15:51:39

87 13 6c 60 a9 1e 02 ac => 2020-04-06 15:53:43

07 14 6c 60 a9 1e 02 ac => 2020-04-06 15:55:51

我在java中应该如何操作才能将16进制数据转换为日期
...全文
850 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
顾染尘 2021-04-08
  • 打赏
  • 举报
回复
引用 8 楼 冰思雨 的回复:
[quote=引用 5 楼 顾染尘 的回复:] 里面 “- 0x1E13380”是什么意思呢 ?这个是什么?
这个整数代表的时间长度是 365 天,我不清楚为什么要有这个时间差, 但是,楼主给的每个数据里面,都相差 365 天的时间(秒)长度, 所以,我将它减去了。[/quote]谢谢解答
冰思雨 2021-04-08
  • 打赏
  • 举报
回复
引用 5 楼 顾染尘 的回复:
里面 “- 0x1E13380”是什么意思呢 ?这个是什么?
这个整数代表的时间长度是 365 天,我不清楚为什么要有这个时间差, 但是,楼主给的每个数据里面,都相差 365 天的时间(秒)长度, 所以,我将它减去了。
  • 打赏
  • 举报
回复
问题已经解决. 被误导了. "a9 1e 02 ac"这个跟时间没有关系. 前面四个字节倒过来转为10进制就是时间戳了
顾染尘 2021-04-07
  • 打赏
  • 举报
回复
当前的十六进制数转换为十进制是什么 有说明吗 ?是秒还是分钟? 如果已经解决 希望能把解决办法写下来,谢谢。
KeepSayingNo 2021-04-07
  • 打赏
  • 举报
回复
85 12 6c 60 a9 1e 02 ac 这个里面应该是每一位代表着时间里面某一项吧,例如代表年
顾染尘 2021-04-07
  • 打赏
  • 举报
回复
引用 3 楼 冰思雨 的回复:
[quote=引用 楼主 weixin_42551868 的回复:]现在已知 85 12 6c 60 a9 1e 02 ac => 2020-04-06 15:49:25 0b 13 6c 60 a9 1e 02 ac => 2020-04-06 15:51:39 87 13 6c 60 a9 1e 02 ac => 2020-04-06 15:53:43 07 14 6c 60 a9 1e 02 ac => 2020-04-06 15:55:51 我在java中应该如何操作才能将16进制数据转换为日期
搞定了,你看一下代码哈:

        final String data = "07 14 6c 60 a9 1e 02 ac";
        String array[] = data.split("\\s");
        String hex = array[3]+array[2]+array[1]+array[0];
        int time = Integer.parseInt(hex, 16) - 0x1E13380;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String result = sdf.format(new Date(time * 1000L));
        System.out.println(result);
输出结果:
2020-04-06 15:55:51
[/quote] 里面 “- 0x1E13380”是什么意思呢 ?这个是什么?
镇潮 2021-04-07
  • 打赏
  • 举报
回复
感觉楼主提供的十六进制时间是通过抓包抓到的,可能这些十六进制与时间之间的转换规则应该要看是采用的什么网络协议,楼主可以朝这方面研究下
冰思雨 2021-04-07
  • 打赏
  • 举报
回复
引用 楼主 weixin_42551868 的回复:
现在已知 85 12 6c 60 a9 1e 02 ac => 2020-04-06 15:49:25 0b 13 6c 60 a9 1e 02 ac => 2020-04-06 15:51:39 87 13 6c 60 a9 1e 02 ac => 2020-04-06 15:53:43 07 14 6c 60 a9 1e 02 ac => 2020-04-06 15:55:51 我在java中应该如何操作才能将16进制数据转换为日期
搞定了,你看一下代码哈:

        final String data = "07 14 6c 60 a9 1e 02 ac";
        String array[] = data.split("\\s");
        String hex = array[3]+array[2]+array[1]+array[0];
        int time = Integer.parseInt(hex, 16) - 0x1E13380;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String result = sdf.format(new Date(time * 1000L));
        System.out.println(result);
输出结果:
2020-04-06 15:55:51

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧