Datetime 日期时间十六进制格式

Datetime 日期时间十六进制格式,datetime,hex,Datetime,Hex,我知道以下一对十六进制值和日期: 7D 92 D2 5C = 26/03/2009 - 09:28 7D 92 DA CC = 27/03/2009 - 11:12 7D 92 E3 56 = 28/03/2009 - 13:22 7D 92 EC 4F = 29/03/2009 - 17:15 7D 92 F3 16 = 30/03/2009 - 12:22 7D 92 FB 1A = 31/03/2009 - 12:26 7D 93 0B 01 = 01/04/2009 - 12:01 7D

我知道以下一对十六进制值和日期:

7D 92 D2 5C = 26/03/2009 - 09:28 7D 92 DA CC = 27/03/2009 - 11:12 7D 92 E3 56 = 28/03/2009 - 13:22 7D 92 EC 4F = 29/03/2009 - 17:15 7D 92 F3 16 = 30/03/2009 - 12:22 7D 92 FB 1A = 31/03/2009 - 12:26 7D 93 0B 01 = 01/04/2009 - 12:01 7D 93 12 88 = 02/04/2009 - 10:08 7D 93 1A 30 = 03/04/2009 - 08:48 7D 93 22 DD = 04/04/2009 - 11:29 7D 93 2A D5 = 05/04/2009 - 11:21 7D 92 D2 5C=26/03/2009-09:28 7D 92 DA CC=27/03/2009-11:12 7D 92 E3 56=28/03/2009-13:22 7D 92 EC 4F=29/03/2009-17:15 7D 92 F3 16=30/03/2009-12:22 7D 92 FB 1A=31/03/2009-12:26 7D 93 0B 01=01/04/2009-12:01 7D 93 12 88=02/04/2009-10:08 7D 93 1A 30=03/04/2009-08:48 7D 93 22 DD=04/04/2009-11:29 7D 93 2A D5=05/04/2009-11:21 我不知道如何从一个转换到另一个

有人认识十六进制格式吗


Al

这是一个简单的位字段,尽管这是一种非常奇怪的时间格式:)

1111101100100101101001001011100 011100-28分钟 01001-09小时 11010-26天 0010-第3个月(以零为基础,因此为第2个月) 111110001-2009年 这是我的猜测。

12位年,4位月(0位),5位日,5位小时,6位分钟


漂亮的拼图:-)

我意识到这是一个老话题,但我发现它很有用,我想我会给它加上我的2美分

u8 getMinutes(u32 in)
{
    return in & 0x3f;
}

u8 getHours(u32 in)
{
    return (in>>6) & 0x1f;
}

u8 getDays(u32 in)
{
    return (in>>11) & 0x1f;
}

u8 getMonths(u32 in)
{
    return ((in>>16)& 0xf)+1;
}

u16 getYears(u32 in)
{
    return (in>>20) & 0x7ff;
}

void printDate(u32 in)
{
    printf("%d/%d/%d - %d:%d", getDays(in), getMonths(in), getYears(in), getHours(in), getMinutes(in));
}

int main(int argc, char *argv[])
{
    u32 t = 0x7D92D25C;
    printDate(t);
    return 0;
}

比我快。:-)我以前见过这种格式,但只是在另一个stackoverflow问题中!哎呀。。。最初我选择Unixtime,因为没有一种常见的Windows时间结构适合32位,但这是。。。奇怪。特别是这个月看起来是零基的,但是天不是。谢谢你,约翰。我真的很感激你的回答。太快了。明亮的我看了看相隔1天左右的日期,这给出了第一条线索。好吧,位域实际上是我的第二个猜测,我坐下来用计算器和记事本(非常方便的工具:)查找位表示法中的每个组件,只是短暂地停顿了一下月份:)
u8 getMinutes(u32 in)
{
    return in & 0x3f;
}

u8 getHours(u32 in)
{
    return (in>>6) & 0x1f;
}

u8 getDays(u32 in)
{
    return (in>>11) & 0x1f;
}

u8 getMonths(u32 in)
{
    return ((in>>16)& 0xf)+1;
}

u16 getYears(u32 in)
{
    return (in>>20) & 0x7ff;
}

void printDate(u32 in)
{
    printf("%d/%d/%d - %d:%d", getDays(in), getMonths(in), getYears(in), getHours(in), getMinutes(in));
}

int main(int argc, char *argv[])
{
    u32 t = 0x7D92D25C;
    printDate(t);
    return 0;
}