【问题标题】:How to get bytes of integer in C?如何在C中获取整数字节?
【发布时间】:2020-05-24 19:05:04
【问题描述】:

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

printf("%x", 67305985);

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

感谢您的宝贵时间。

【问题讨论】:

  • 您希望看到值0x04300021 的输出是什么? 4321?
  • 不可能用格式说明符 %x 领先 0s。您需要编辑您的问题,不要陈述不真实的内容。

标签: c integer byte


【解决方案1】:

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

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

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

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

【讨论】:

  • 另外,如果您这样做,我强烈建议您在宏中定义 0x000000FFu,这样您就不必自己重新复制粘贴。 (如果您为宏提供描述性名称,这也可能使代码更易于阅读)
猜你喜欢
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多