gpt4 book ai didi

c - 如何将32位打包成4x8位?

转载 作者:行者123 更新时间:2023-11-30 16:15:54 24 4
gpt4 key购买 nike

我对 C 编程相当陌生,如果问题的解释不能令人满意,我很抱歉。我有一个32位二进制数如下:

typedef unsigned long U32;
U32 a;
a = 11111111000000001111111100000000;

如何将其转换为 4 乘以 8 位的二进制数。我只想取一个变量下的前 8 位,然后将后 8 位放入另一个变量等。例如,

typedef uint8;
uint8 b, c, d, e;
b = 11111111;
c = 00000000;
d = 11111111;
e = 00000000;

最佳答案

您可以按照以下方式将正确的移位和掩码应用于每个变量:

typedef unsigned long U32;
U32 a;
a = 0xFF00FF00; //11111111000000001111111100000000;

uint8 b, c, d, e;

e = (uint8)(a & 0xFF);
d = (uint8)((a >> 8) & 0xFF);
c = (uint8)((a >> 16) & 0xFF);
b = (uint8)((a >> 24) & 0xFF);

这是一种快速而肮脏的方式。您还可以使用循环来更优雅。

关于c - 如何将32位打包成4x8位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56935531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com