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));
相关推荐
FL16238631294 小时前
[C#][winform]基于yolov8的水表读数检测与识别系统C#源码+onnx模型+评估指标曲线+精美GUI界面
开发语言·yolo·c#
cnxy1886 小时前
围棋对弈Python程序开发完整指南:步骤1 - 棋盘基础框架搭建
开发语言·python
sevenez7 小时前
Vibe Coding 实战笔记:从“修好了C坏了AB”到企业级数据库架构重构
c语言·笔记·数据库架构
程序员-周李斌7 小时前
Java 死锁
java·开发语言·后端
一路往蓝-Anbo8 小时前
【第20期】延时的艺术:HAL_Delay vs vTaskDelay
c语言·数据结构·stm32·单片机·嵌入式硬件
JasmineWr8 小时前
CompletableFuture相关问题
java·开发语言
零雲8 小时前
java面试:知道java的反射机制吗
java·开发语言·面试
Jeremy爱编码8 小时前
实现 Trie (前缀树)
开发语言·c#
laocooon5238578869 小时前
插入法排序 python
开发语言·python·算法
你的冰西瓜9 小时前
C++中的list容器详解
开发语言·c++·stl·list