这个时间戳是怎么回事???

starrycheng 2017-06-11 12:08:19
我们一般的时间戳是这样的:1497152864,十六进制0x593cbd60,四字节。

今天看到一个通信协议:
|含义|字节数|取值范围|
|---|---|---|
|时间戳|6|0x100815083105|

* 时间戳:0x100815083105 代表16年8月21号8点49分5秒(24小时制),下同。(设备登录时时间会不准,所以需要服务器回复当前时间对设备进行时间校正)

设备上传的时间戳是0x100815083105 ,6字节。而我们C# long epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; 计算出来的时间戳是4字节的 1497152864 。

如果是将0x100815083105 转换为 十进制“17626898641157“”,数值会更大。

用毫秒转化还是不对,这个时间戳改怎么解析??? 是咋回事?
...全文
371 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2017-06-11
  • 打赏
  • 举报
回复
你收到的是 "\x10\x08\x15\x08\x31\x05" 这样的字符串 或 { 16, 8, 21, 8, 49, 5 } 这样的 byte[] 数组 依次此表示: 年、月、日、时、分、秒
            var s = "\x10\x08\x15\x08\x31\x05";
            // { 16, 8, 21, 8, 49, 5 }
            var b = s.Select(x => (byte)x).ToArray();
            var d = DateTime.Parse(string.Format("{0}-{1}-{2} {3}:{4}:{5}", b[0], b[1], b[2], b[3], b[4], b[5]));
            Console.WriteLine(d);
xuzuning 2017-06-11
  • 打赏
  • 举报
回复
发还时
byte[] c = { (byte)(d.Year-2000), (byte)d.Month, (byte)d.Day, (byte)d.Hour, (byte)d.Minute, (byte)d.Second };

110,533

社区成员

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

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

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