将二进制字符串转换为十六进制字符串C

将二进制字符串转换为十六进制字符串C,c,string,binary,char,hex,C,String,Binary,Char,Hex,正如标题所说,我对C语言中将二进制字符串转换为十六进制字符串的最佳方式感兴趣。二进制字符串最多为4位,因此最好将其转换为单个十六进制字符 感谢您的帮助,我不确定是否有内置的工具可以简化此操作,因此暂时不要尝试发布。您可以使用strtol将二进制字符串转换为整数,然后sprintf将整数转换为十六进制字符串: char* binaryString = "1101"; // convert binary string to integer int value = (int)strtol(binar

正如标题所说,我对C语言中将二进制字符串转换为十六进制字符串的最佳方式感兴趣。二进制字符串最多为4位,因此最好将其转换为单个十六进制字符


感谢您的帮助,我不确定是否有内置的工具可以简化此操作,因此暂时不要尝试发布。

您可以使用
strtol
将二进制字符串转换为整数,然后
sprintf
将整数转换为十六进制字符串:

char* binaryString = "1101";

// convert binary string to integer
int value = (int)strtol(binaryString, NULL, 2);

// convert integer to hex string
char hexString[12]; // long enough for any 32-bit value, 4-byte aligned
sprintf(hexString, "%x", value);

// output hex string
printf(hexString);
输出:

d

如果保证它是一个十六进制字符,只需使用
hextstring[0]

你说的“最佳”是什么意思?最快的?最简单的代码?@samgak抱歉,最简单的代码,但性能却非常差。不太担心性能。谢谢你的问题太宽泛了,不在主题上。StackOverflow不是一个编码服务。@2501作为一个C新手,我真的很感兴趣的是,是否有内置的东西使它更容易,而不是编写我自己的函数。感谢您的意见,使用atoi将二进制字符串转换为int,使用base 2,然后使用sprintf将int转换为十六进制字符串