十六进制的人体可读时间戳

toz*_*han 2 c hex timestamp

如何从十六进制时间戳(例如33 88 72 52)变为人类可读?我把它从一个文件中拉出来作为一个数组字节= {0x33,0x88,0x72,0x52},我认为它是小端...已经有点困在这一个小时左右了谷歌并没有多大的帮助.谢谢.

pax*_*blo 5

这完全取决于未指定的编码.

但是,在四个字节处,它可能time_t此程序支持的值:

#include <stdio.h>
#include <time.h>

int main (void) {
    time_t tm = 0x52728833;       // little-endian 0x{33,88,72,52}
    printf ("%s\n", ctime (&tm));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印出:

Fri Nov  1 00:41:23 2013
Run Code Online (Sandbox Code Playgroud)

这是几天前(从问这个问题时).

所以这是最有可能的(几乎是确定的,我会冒险),你可以使用ISO C的所有奇妙的时间操作和打印功能来解决它​​.