【问题标题】:How to convert 32 bit time_t value to 64 bit time_t如何将 32 位 time_t 值转换为 64 位 time_t
【发布时间】:2012-06-28 16:48:10
【问题描述】:

我正在研究嵌入式系统。我们的平台是 32 位的,所以 time_t 的大小是 32 位的。

现在我想将一个结构作为char 数组发送到Windows 7 计算机。 我的结构的字段之一是time_t。 我不能改变结构。

所以我必须使用 32 位变量将时间值发送到 Windows 机器,当 char 数组到达时,我必须将 32 位无符号整数值转换为 64 位 time_t

我想我不能直接将 32 位整数转换为 64 位 time_t,因为 32 位 time_t 从 1970 年开始,而 64 位从 1600 年开始。

那么有什么办法可以转化吗?

【问题讨论】:

  • [google.se/…](google) 你自己的标题 :-)
  • 我想这可能会对你有所帮助.. stackoverflow.com/questions/2467418/…
  • Our platform is 32-bit so time_t size is 32-bit 这不是真的。操作系统位数与time_t 的大小无关。只是以前time_t 通常被定义为与寄存器大小相同的大小。 32位Windows已经用了64位time_t很久了,Linuxhas just moved to 64-bit time_t recently
  • because 32-bit time_t starts from year 1970 but 64-bit start from year 1600完全错误。 32 位或 64 位 time_t 通常使用 1970 纪元。只有Windows FILETIME从1601开始。这些是不同类型的时间,有not only 2 of them

标签: c windows type-conversion 32bit-64bit time-t


【解决方案1】:

见:time, _time32, _time64 documentation

两者都从 1970 年 1 月 1 日开始。您只需要在以字符形式发送时担心字节顺序。

【讨论】:

    【解决方案2】:

    精度(即单位)是否相同(秒)?如果是这样,那么您应该能够通过减去差异并截断为 32 位来转换较大的数字。

    计算所需的秒数可能有点棘手......我试过Wolfram Alpha,但我不知道如何得到比“1.168 * 1010 秒”更精确的答案.

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-17
    • 2011-01-28
    • 2013-10-19
    • 2015-05-19
    • 2021-01-22
    • 2014-09-11
    • 2012-03-18
    • 2013-03-22
    相关资源
    最近更新 更多