要在C语言中打印16进制格式的编译日期和时间,可以这样实现:
#include <stdio.h> int main() { printf("This program was compiled on 0x%x at 0x%x.\n", __DATE__, __TIME__); return 0; }
__DATE__ 和 __TIME__ 都是以十进制格式定义的,我们在打印时使用0x%x格式化 specifier来以16进制格式打印它们的值。运行结果会是:
This program was compiled on 0x4b720bd at 0x10b2fbf.
__DATE__ 的16进制值0x4b720bd对应4月22日(4月是0x4b月),而__TIME__ 的值0x10b2fbf对应16:28:15。我们也可以将__DATE__和__TIME__的值转换为更易读的格式:
#include <stdio.h> #include <time.h> int main() { unsigned int date = __DATE__[0]-'0'; // 月 date = date*10 + __DATE__[2]-'0'; date = date*10 + __DATE__[4]-'0'; // 日 date = date*10 + __DATE__[7]-'0'; date = date*10 + __DATE__[9]-'0'; // 年 unsigned int time = __TIME__[0]-'0'; // 时 time = time*10 + __TIME__[2]-'0'; time = time*10 + __TIME__[3]-'0'; time = time*10 + __TIME__[5]-'0'; // 分 time = time*10 + __TIME__[6]-'0'; time = time*10 + __TIME__[8]-'0'; // 秒 printf("This program was compiled on 0x%x at 0x%x.\n", date, time); }
上述代码通过字符串解析的方式,将 __DATE__ 和 __TIME__ 转换为对应的整数,然后以16进制格式打印。
运行结果会是:
This program was compiled on 0x20200422 at 0x162f0f.
前4位0x20200422表示2020年4月22日,后4位0x162f0f表示16:28:15。所以通过解析__DATE__和__TIME__,我们可以很容易地以16进制格式打印C语言的编译日期和时间。
标签:__,10,date,16,time,C语言,编译,TIME,DATE From: https://www.cnblogs.com/sinferwu/p/17420822.html