c - 如何在C中获取整数字节?
问题描述
问题是如何从没有“0”的整数中获取字节数?我的意思是当我想:
printf("%x", 67305985);
输出是:04030201。有没有机会在输出中得到 4321(没有“0”)?我试图将整数转换为无符号字符数组,但也有同样的问题。
谢谢你的时间。
解决方案
一种方法是使用位移位和位掩码的组合。
如果您&
将 32 位整数与 32 位整数相对,0x000000FFu
则结果是一个整数,其中仅设置了 A: 已设置的位和 B: 位于数字的最后 8 位的位。要选择整数的其他部分,可以按 8 的倍数进行位移。IE (x >> 8) &
0x000000FFu to select the second byte from the right,
(x >> 16) &0x000000FFu
选择第三个。
然后,您可以将这些中的每一个打印为十进制格式的常规无符号整数。
我不确定这种方法的性能如何与将无符号整数指针转换为无符号字符指针并以这种方式进行比较。
推荐阅读
- css - 旋转元素上的 Safari 渲染问题
- objective-c - 使用 URL 传递参数
- c++ - 从 cmd 运行 cl.exe
- php - 如果日期是 20/2/1998 和 51,如何从 php 示例中的日期获取天数(如年份)?
- excel - 如何在excel中比较一个句子中的多个单词
- node.js - 由于身份验证失败,参考私有存储库 vsts git 存储库在 docker 中运行 package.json 失败
- python - Pandas 读取 JSON 导致值转换为科学计数法
- authentication - 令牌格式无效
- ios - 屏幕锁定时推送通知到达后是否执行操作?
- amazon-web-services - 停止 ec2 实例后,sonarqube docker 容器的设置丢失