首页 > 其他分享 >C语言 加入16进制格式 编译日期 编译时间

C语言 加入16进制格式 编译日期 编译时间

时间:2023-05-22 15:57:30浏览次数:34  
标签:__ 10 date 16 time C语言 编译 TIME DATE

 

 

要在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

相关文章

  • 16种常用的数据分析方法汇总(转载)
    一、描述统计描述性统计是指运用制表和分类,图形以及计筠概括性数据来描述数据的集中趋势、离散趋势、偏度、峰度。缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率回归法、决策树法。正态性检验:很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验......
  • FreeSWITCH1.10.5源码编译(CentOS 7.10)
    一、安装sofia-sipcd/usr/local/src/freeswitch-1.10.5.-releasegitclonehttps://github.com/freeswitch/sofia-sip.gitcdsofia-sip./configuremakemakeinstallldconfig二、安装spandspcd/usr/local/src/freeswitch-1.10.5.-releasegitclonehttps://github.......
  • 页面置换算法的c语言实现
    #include<bits/stdc++.h>usingnamespacestd;intn;//物理块号数intlen,op;//进程数inta[100];//存储进程执行的先后顺序;intres[100][100];//存放进程执行的结果数组intoptfind[100],optflag[100];intlruflag[1000];intnru_value[100],nru_r[100],nru_m[100];voidprint......
  • 打卡 c语言趣味编程 舍罕王的失算
    问题描述:相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第1格中放1粒,第2格放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上64格......
  • iTOP-RK3568开发板编译瑞芯微原厂源码
    1输入以下命令设置java版本为1.8版本,确认java版本是1.8版本之后,才可以进行下一步编译,如下图所示:sourcejavaenv.shjava-version2输入命令配置Android分支sourcebuild/envsetup.shlunchrk3568_r-userdebug2在编译内核的过程中,会提示电源域检查,如下图所示:设备树中关......
  • c语言程序设计知识点总结03
    c语言程序设计知识点总结03地址(Address):计算机的内存由若干个字节内存单元构成,每个字节内存单元都有一个唯一的地址用于区分和存取单元中的数据。形式上,地址是一个无符号整数,从0开始,依次递增,在表达和交流时,通常把地址写成十六进制数。指针(Pointer):一个变量,它存有另外一......
  • 图的创建——C语言描述
    图的创建——C语言描述目录图的创建——C语言描述0测试用例框架1定义2邻接矩阵法2.1数据结构2.2构建图代码(2)测试用例(3)打印结果0测试用例框架https://blog.csdn.net/m0_59469991/article/details/127137119?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%......
  • 复习C语言小问题
    1:强制类型转换的问题2:空间配置器的原理以及作用。3:复习C语言是支持隐式类型的转换的,但是这个转换的过程比较的“简陋”只用一个赋值运算符就完事了,但是有些类型转换是比较危险的,比如静态变量强制转换位非静态变量,因为静态变量存在寄存器中,编译器取的时候是寄存器中取得,如果用指......
  • C语言编程—存储知识
    存储类定义C程序中变量/函数的的存储位置、生命周期和作用域。这些说明符放置在它们所修饰的类型之前。下面列出C程序中可用的存储类:autoregisterstaticexternauto存储类auto存储类是所有局部变量默认的存储类。定义在函数中的变量默认为auto存储类,这意味着它们在函数开始......
  • C语言--位运算
    位运算符只能用于整数类型左移和右移运算符的右操作数范围必须为【0,31】位运算没有短路原则(!取反),所有操作数均会求值位运算的效率高于四则运算和逻辑运算运算优先级:四则运算》位运算》逻辑运算......