关于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#