在C中连接十六进制数

问题描述 投票:5回答:1

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

例:

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

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

c hex concatenation
1个回答
18
投票

假设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;
© www.soinside.com 2019 - 2024. All rights reserved.