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));
相关推荐
沐知全栈开发8 分钟前
TypeScript Array(数组)
开发语言
陶陶name12 分钟前
Metal Compute Pipeline:Metal-C++ 环境配置与简单算子实现
开发语言·c++
认真敲代码的小火龙12 分钟前
【JAVA项目】基于JAVA的宿舍管理系统
java·开发语言·课程设计
无限进步_13 分钟前
寻找数组中缺失数字:多种算法详解与比较
c语言·开发语言·数据结构·算法·排序算法·visual studio
lsx20240614 分钟前
C 标准库 - <assert.h>
开发语言
Wzx19801216 分钟前
go接受输入方式
开发语言·后端·golang
CC.GG19 分钟前
【Qt】Qt背景与环境搭建
开发语言·qt
你的冰西瓜26 分钟前
C++23 新特性详解:相较于 C++20 的主要改进
开发语言·c++·stl·c++23
沐知全栈开发27 分钟前
HTMLCollection 对象
开发语言
froginwe1134 分钟前
Ruby 日期 & 时间处理指南
开发语言