如何将32位压缩为4x8位?

时间:2019-07-08 13:01:54

标签: c bit-manipulation byte

对于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;

1 个答案:

答案 0 :(得分:1)

您可以按照以下说明对每个变量应用正确的移位和掩码:

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);

那是快速而肮脏的方式。您还可以使用循环使其更优雅。