c - 将 uint64_t 分解为 uint8_t 数组 - C
问题描述
我想将 64 位 unsigned int 转换为 C 中的 uint8_t 数组。
解决方案
一种解决方案是将按位与与位移运算符结合使用:
#include <stdio.h>
#include <stdint.h>
int main() {
uint64_t var = 0x1122334455667788;
uint8_t array[8] = {
(var & 0x00000000000000FFull) >> 0,
(var & 0x000000000000FF00ull) >> 8,
(var & 0x0000000000FF0000ull) >> 16,
(var & 0x00000000FF000000ull) >> 24,
(var & 0x000000FF00000000ull) >> 32,
(var & 0x0000FF0000000000ull) >> 40,
(var & 0x00FF000000000000ull) >> 48,
(var & 0xFF00000000000000ull) >> 56
};
for (uint8_t i = 0; i < 8; ++i) {
printf("%d %2.2x\n", i, array[i]);
}
return 0;
}
推荐阅读
- odbc - MariaDB ODBC 连接器 3.1.4(32 位),带有 BEGIN NOT ATOMIC
- python - 在 GPIO 中断上写入/读取 SPI 失败并出现 OSError:[Errno 9] 文件描述符错误
- java - Jpype 中的多处理内存泄漏
- react-transition-group - 如何将 css 模块中的类包含到 react-transition-group 组件中?
- angular - 从节点模块覆盖样式
- java - 使用数据结构在 Java 中实现 Excel 工作表功能
- activecollab - ActiveCollab API v1 无法更改项目的 hourly_rates
- swiftui - 视图在模态演示中从左右边缘压缩
- flutter - 如何在 Flutter 中构建自定义圆圈范围?
- c# - 如何修复:将单例服务注入 SignalR 集线器导致问题