网络通信基础:基础位操作(二)自定义DateTime数据类型

我们来分析一下DateTime的数据需求,DateTime主体要求是保存时间,年月日时分秒。在.net的DateTime结构中提供ToBinary()方法,将DateTime序列化成long型数值。这篇文章描述的也正是一种时间序列化方法。
数据位分析:
年-> 4位有效数字,最大数字 9999, 二进制 10011100001111, 位数 14 。
月-> 2位有效数字,最大数字 12, 二进制 1100, 位数 4 。
日-> 2位有效数字,最大数字 31, 二进制 11111, 位数 5 。
时-> 2位有效数字,最大数字 23, 二进制 10111, 位数 5 。
分-> 2位有效数字,最大数字 59, 二进制 111011, 位数 6 。
秒-> 2位有效数字,最大数字 59, 二进制 111011, 位数 6 。
毫秒-> 3位有效数字,最大数字 999, 二进制 1111100111, 位数 10 。
钠秒-> 9位有效数字,最大数字 999999999,二进制 111011100110101100100111111111,位数 30 。
注意:在.net中 DateTime精度是100钠秒。
百钠秒-> 7位有效数字,最大数字 9999999,二进制 100110001001011001111111,位数 24 。
十万钠秒-> 4位有效数字,最大数字 9999,二进制 10011100001111,位数 14 。
采用毫秒融入后,最终时间数据是:
年 + 月 + 日 + 时 + 分 + 秒 + 毫秒 + 10万钠秒
采用百钠秒融入后,最终时间数据是:
年 + 月 + 日 + 时 + 分 + 秒 + 百钠秒
yyyy-MM-dd HH:mm:ss.fffffff
所需位数是:14 + 4 + 5 + 5 + 6 + 6 + 10 + 14 = 64。
和long类型长度一致,不得不说是一个巧合,是偶然也是必然。在.net中,正是使用long类型来序列化DateTime结构。
Tags: 

延伸阅读

最新评论

发表评论