首页 > 解决方案 > 将 uint64_t 分解为 uint8_t 数组 - C

问题描述

我想将 64 位 unsigned int 转换为 C 中的 uint8_t 数组。

标签: cuint8tuint64

解决方案


一种解决方案是将按位与与位移运算符结合使用:

#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;
}

推荐阅读