对于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;
答案 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);
那是快速而肮脏的方式。您还可以使用循环使其更优雅。