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

How to convert binary to hex code digit-wise

本文关键字:十六进制 代码 转换 二进制      更新时间:2023-10-16

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

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

现在我想做的是如下所示。将上述值转换为十六进制值,并将它们按数字存储在一个字符串中:string hex_result="AB43";(如1010=10=A, 1011=11=B, 0100=4=4, 0011=3=3)。之后,我需要hex_result描述的实际值,这是:int value = 43843;(作为AB43=43843)。

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

除了@Amit的响应,下面也可以:

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

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

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

应该工作…