怎么把一个16进制数转换为时间,100分

zylsky 2009-10-14 10:49:45
4a c4 c5 05 00 00 00 00怎么能转换成10-1 23:04:37
...全文
392 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxh0959 2011-09-14
  • 打赏
  • 举报
回复

byte[] b = {0x4a, 0xc4, 0xc5, 0x05,0,0,0,0 };
DateTime t = DateTime.Parse("1970-1-1");
long t2 = System.Net.IPAddress.HostToNetworkOrder(BitConverter.ToInt32(b, 0));
DateTime dt = t.AddSeconds(t2).ToLocalTime();
Console.WriteLine(dt);
lxh0959 2011-09-14
  • 打赏
  • 举报
回复
byte[] b = {0x4a, 0xc4, 0xc5, 0x05,0,0,0,0 };
DateTime t = DateTime.Parse("1970-1-1");
long t2 = System.Net.IPAddress.HostToNetworkOrder(BitConverter.ToInt32(b, 0));
DateTime dt = t.AddSeconds(t2).ToLocalTime();
Console.WriteLine(dt);
边城的刀声 2009-10-14
  • 打赏
  • 举报
回复
关注
zylsky 2009-10-14
  • 打赏
  • 举报
回复
不是我自己算的。这是一个聊天记录文件的格式,时间是显示给我们看的。数据就是4a c4 c5 05 00 00 00 00
wuyi8808 2009-10-14
  • 打赏
  • 举报
回复
    byte[] b = { 0x4a, 0xc4, 0xc5, 0x05, 0, 0, 0, 0 };
DateTime dt = DateTime.FromBinary(BitConverter.ToInt64(b, 0));
Console.WriteLine(dt);
yuanhuiqiao 2009-10-14
  • 打赏
  • 举报
回复
16->2再几位一组?
yang1216 2009-10-14
  • 打赏
  • 举报
回复
看不出LZ怎么转过来的,先给规律啊。
xzq686 2009-10-14
  • 打赏
  • 举报
回复
转不了吧?有啥规律吗?
zhangyanyang 2009-10-14
  • 打赏
  • 举报
回复
楼主怎么算的
足球中国 2009-10-14
  • 打赏
  • 举报
回复
convert.todatetime
ncjcz 2009-10-14
  • 打赏
  • 举报
回复
多给几组数据看看
LutzMark 2009-10-14
  • 打赏
  • 举报
回复
貌似有高低位或者疑惑转换后生成的数据,貌似以前Pctools改游戏的手段,不过得先找出规律
zylsky 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lzsh0622 的回复:]
数据样本太少,靠猜是猜不出来的。

给你个分析思路参考:
(1) 取得典型样本
日期部分
2009-10-01 23:04:37 ---> 4a c4 c5 05 00 00 00 00怎么能转换成
2009-11-01 23:04:37 ---> ???
2010-10-01 23:04:37 ---> ???
日期部分
2009-10-01 23:04:37 ---> ???
2009-10-01 22:04:37 ---> ???
2009-10-01 23:03:37 ---> ???
2009-10-01 23:04:36 ---> ???

上面是典型数据,可以从以前的历史数据中抽取
也可以运行软件,分析生成结果。
(再试一下修改系统时间,写进去的时间是否变化)

(2) 用二进制文件编辑工具,从数据库下手
4a c4 c5 05 00 00 00 00  --> 2009-10-01 23:04:37
4b c4 c5 05 00 00 00 00  --> ???
4c c4 c5 05 00 00 00 00  --> ???
... ...
4a c4 c5 05 01 00 00 00  --> ???

通过上面的方法,应该找得到规律。
(另外,时间在数据库的存贮一般是低位在前,高位在后)

楼想着结贴呀
[/Quote]

感谢您写这么多。我会认真测试。
lzsh0622 2009-10-14
  • 打赏
  • 举报
回复
数据样本太少,靠猜是猜不出来的。

给你个分析思路参考:
(1) 取得典型样本
日期部分
2009-10-01 23:04:37 ---> 4a c4 c5 05 00 00 00 00怎么能转换成
2009-11-01 23:04:37 ---> ???
2010-10-01 23:04:37 ---> ???
日期部分
2009-10-01 23:04:37 ---> ???
2009-10-01 22:04:37 ---> ???
2009-10-01 23:03:37 ---> ???
2009-10-01 23:04:36 ---> ???

上面是典型数据,可以从以前的历史数据中抽取
也可以运行软件,分析生成结果。
(再试一下修改系统时间,写进去的时间是否变化)

(2) 用二进制文件编辑工具,从数据库下手
4a c4 c5 05 00 00 00 00  --> 2009-10-01 23:04:37
4b c4 c5 05 00 00 00 00 --> ???
4c c4 c5 05 00 00 00 00 --> ???
... ...
4a c4 c5 05 01 00 00 00 --> ???

通过上面的方法,应该找得到规律。
(另外,时间在数据库的存贮一般是低位在前,高位在后)

楼想着结贴呀
nashina 2009-10-14
  • 打赏
  • 举报
回复
这个得需要转换协议,如果不是通用的,靠自己猜肯定很费劲的
边城的刀声 2009-10-14
  • 打赏
  • 举报
回复
空军的结果会包含年信息的。
要不你把2009转成十六进制,然后再加入空军的那个byte数组中第一位,再FromBinary一下,看看行不行
边城的刀声 2009-10-14
  • 打赏
  • 举报
回复
10-1 23:04:37
你的十六进制中缺少年信息?
zylsky 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyi8808 的回复:]
C# codebyte[] b= {0x4a,0xc4,0xc5,0x05,0,0,0,0 };
DateTime dt= DateTime.FromBinary(BitConverter.ToInt64(b,0));
Console.WriteLine(dt);
[/Quote]
您的方法算出来的结果不对,

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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