如何将二进制代码数字转换为十六进制代码

时间:2015-05-20 13:09:03

标签: c++ binary hex

在C ++中,我将四个二进制数存储在四个strings中,让我们说: string s1="1010", s2="1011", s3="0100", s4="0011";或直接存储为int s: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"进行评估来实现这一点,但我需要从单个二进制字符串中获取十六进制代码,因此如上所述。

2 个答案:

答案 0 :(得分:0)

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);

应该工作......

答案 1 :(得分:0)

除了@ Amit的回复,这也会有效:

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

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