【发布时间】:2013-04-18 23:33:58
【问题描述】:
我一直在尝试连接 4 个十六进制数字,但似乎无法做到。
例子:
int a = 0x01;
int b = 0x00;
int c = 0x20;
int d = 0xF1;
//Result should be 0x010020F1
我使用sprintf() 和按位运算得到的结果总是截断零,给了我像 1020F1 这样的答案,这与我想要的有很大不同。谁有更好的方法?
【问题讨论】:
-
如果你想使用
snprintf(),那么:snprintf(buffer, sizeof(buffer), "0x%.2X%.2X%.2X%.2X", a, b, c, d);应该可以解决问题,除非buffer的长度小于 11 个字节。 -
如果您只想打印,请使用
printf("0x%02x%02x%02x%02x\n", a,b,c,d); -
@Eddy_Em:过于挑剔,使用
X来获得所需结果的F1部分。 -
@JonathanLeffler,同意,我没有注意到大 F。
标签: c hex concatenation