8

我一直在尝试连接 4 个十六进制数字,但似乎无法做到。

例子:

int a = 0x01;
int b = 0x00;
int c = 0x20;
int d = 0xF1;
//Result should be 0x010020F1

我使用的结果sprintf()和按位运算总是切断零,给我像 1020F1 这样的答案,这与我想要的有很大不同。有人有更好的方法吗?

4

1 回答 1

21

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

unsigned int result = (a<<24) | (b<<16)| (c<<8) | d;

但这本质上是依赖于实现的,因为 C++ 标准只指定了最小的整数大小。

所以对于uint32_t a, b, c, d

uint32_t result = (a<<24) | (b<<16)| (c<<8) | d;
于 2013-04-25T07:15:55.267 回答