首页 > 解决方案 > 如何在C中获取整数字节?

问题描述

问题是如何从没有“0”的整数中获取字节数?我的意思是当我想:

printf("%x", 67305985);

输出是:04030201。有没有机会在输出中得到 4321(没有“0”)?我试图将整数转换为无符号字符数组,但也有同样的问题。

谢谢你的时间。

标签: cintegerbyte

解决方案


一种方法是使用位移位和位掩码的组合。

如果您&将 32 位整数与 32 位整数相对,0x000000FFu则结果是一个整数,其中仅设置了 A: 已设置的位和 B: 位于数字的最后 8 位的位。要选择整数的其他部分,可以按 8 的倍数进行位移。IE (x >> 8) &0x000000FFu to select the second byte from the right,(x >> 16) &0x000000FFu选择第三个。

然后,您可以将这些中的每一个打印为十进制格式的常规无符号整数。

我不确定这种方法的性能如何与将无符号整数指针转换为无符号字符指针并以这种方式进行比较。


推荐阅读