如何将二进制代码逐位转换为十六进制代码

How to convert binary to hex code digit-wise

在 C++ 中,我将四个二进制数存储在四个 strings 中,比方说: string s1="1010", s2="1011", s3="0100", s4="0011"; 或者直接存储为 ints: int i1=10, i2=11, i3=4, i4=3;.

我不知道哪种情况会导致更好的解决方案,这就是为什么我想澄清一下,我可以从两者开始。

现在我要做的事情如下。将上述值转换​​为十六进制值并将它们按数字存储在一个字符串中:string hex_result="AB43";(如 1010=10=A1011=11=B0100=4=40011=3=3)。之后我需要 hex_result 描述的实际值,这是:int value = 43843;(如 AB43=43843)。

我知道我可以通过直接将二进制值作为一个字符串求值来实现这一点 "1010101101000011",但我需要从单个二进制字符串中获取十六进制代码,因此如上所述。

int 开始:

int i1=10, i2=11, i3=4, i4=3;
int value = (i1<<12) + (i2<<8) + (i3<<4) + i4;
char hex_result[5];
sprintf(hex_result, "%X", value);

应该可以...

除了@Amit 的回复之外,这也行得通:

int i1=10, i2=11, i3=4, i4=3;
char result[5];
sprintf(result,"%x%x%x%x\n", i1,i2,i3,i4);

由于二进制到十六进制转换的性质,这消除了位移但产生相​​同的结果。