当前位置:编程学习 > C#/ASP.NET >>

关于NTP时间的计算


ulong intpart = 0, fractpart = 0;
DateTime StartOfCentury = new DateTime(1900, 1, 1, 0, 0, 0); // January 1, 1900 12:00 AM

ulong milliseconds = (ulong)(date - StartOfCentury).TotalMilliseconds;
intpart = milliseconds / 1000;
fractpart=((milliseconds % 1000) * 0x100000000L) / 1000;

ulong temp = intpart;
for(int i = 3; i >= 0; i--)
{
NTPData[offset + i] = (byte) (temp % 256);
temp = temp / 256;
}

temp = fractpart;
for(int i = 7; i >=4; i--)
{
NTPData[offset + i] = (byte) (temp % 256);
temp = temp / 256;
}

这是关于NTP时间同步算法的一部分。我有些不理解的是:fractpart=((milliseconds % 1000) * 0x100000000L) / 1000;获得小数部分,不理解问什么要乘以16进制的长整型呢?回答的好加分
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,