在C中连接十六进制数

Mik*_*e M 7 c hex concatenation

我一直试图连接4个十六进制数字,似乎无法做到这一点.

例:

int a = 0x01;
int b = 0x00;
int c = 0x20;
int d = 0xF1;
//Result should be 0x010020F1
Run Code Online (Sandbox Code Playgroud)

我使用sprintf和按位操作得到的结果总是切断零,给我1020F1这样的答案,这与我想要的大不相同.有谁有更好的方法?

Ale*_*lex 20

假如 unsigned int a,b,c,d;

unsigned int result = (a<<24) | (b<<16)| (c<<8) | d;
Run Code Online (Sandbox Code Playgroud)

  • 这个答案正确使用`unsigned int`.我们应该强调**未签名的**.如果标识符在问题中是"int",则"a << 24"可能是未定义的. (4认同)