如何将64位长数据类型转换为16位数据类型

mah*_*esh 0 c c++ timestamp

我想知道如何将64 bit long数据类型转换为任何16 bit数据类型.以太网应用程序中需要此功能才能包含时间戳.只有2个字节(16位)可用于包含时间戳.但我们得到的64 bit long是时间戳值Win API.因此,从64位数据类型到16位数据类型的转换是必不可少的.

NeA*_*RAZ 5

好吧,你不能将64位信息放入16位存储而不会丢失一些信息.

因此,您可以自行决定如何量化或截断时间戳.例如,假设您获得的时间戳精确到纳秒级,但您只需要以秒精度存储它.在这种情况下,您将64位数除以1000000000,并留下秒.然后它可能适合16位或不适合16位(16位只能存储65535秒).

如果它不适合,那么你将定期包围时间戳.在您的情况下,这可能是一个问题,也可能不是问题.

在任何情况下,如果您需要连接需要时间戳的现有库 - 在该时间戳中找出它需要什么(时钟滴答?秒?年?).然后找出你正在使用的Windows时间函数返回的内容.然后将Windows时间单位转换为您使用的库时间单位.