C语言巧妙打印64位整数

使用C语言打印64位整数时,如果用的是32位编译器,那么打印如下,

C 复制代码
int64_t data = 0x1234567890123456;
printf("0x%llx\n", data);

如果是64位编译器,那么打印代码如下,

C 复制代码
int64_t data = 0x1234567890123456;
printf("0x%lx\n", data);

注意,以上是Linux下的代码,windows下还不一样... ...

那么如何写出通用代码呢?网上搜索是使用%I64d来进行打印。但是大部分时候我们可能会忘记这个写法,毕竟很少用。

本人的思路是把64位整数拆成2个32位打印,

C 复制代码
int64_t data = 0x1234567890123456;
printf("0x%x, 0x%x\n", (int32_t)(data&0xFFFFFFFF), (int32_t)((data>>32)&0xFFFFFFFF));

可能又会问如何处理大小端呢,只要在打印时加点注释就行了,如下,

C 复制代码
int64_t data = 0x1234567890123456;
printf("l32: 0x%x, h32: 0x%x\n", (int32_t)(data&0xFFFFFFFF), (int32_t)((data>>32)&0xFFFFFFFF));
相关推荐
为更好遇见10 分钟前
C:内存函数
c语言·开发语言
~在杰难逃~12 分钟前
Day23笔记-Day21和Day22作业讲解&单例类
开发语言·笔记·python·pycharm·数据分析
吾爱星辰16 分钟前
【解密 Kotlin 扩展函数】自定义函数(十二)
java·开发语言·jvm·kotlin
鸽芷咕17 分钟前
【Python报错已解决】IndentationError: unexpected indent
开发语言·python·bug
爱里承欢。1 小时前
【Python语言初识(一)】
开发语言·python
CN.LG2 小时前
浅谈C#之SynchronizationContext
开发语言·c#
一只小小程序猿2 小时前
Python计算机视觉编程 第九章 图像分割
开发语言·python·计算机视觉
武昌库里写JAVA2 小时前
人工智能不是人工“制”能
c语言·开发语言·数据结构·算法·二维数组
凌肖战4 小时前
力扣上刷题之C语言实现-Day2
c语言·算法·leetcode
azhou的代码园4 小时前
基于JAVA+SpringBoot+Vue的医院资源管理系统
java·开发语言·vue.js·spring boot·毕业设计·医院资源管理