在C语言中将二进制转换为字符

12

我对如何在c语言中将二进制值转换为字符感到困惑。

例如,假设我有01010110并且想要从中打印出对应的字母“V”,我该怎么做?

谢谢任何帮助!


1
你说的“1010110”是什么意思?是寄存器中的二进制数,还是1/0字符?(如果是二进制值,只需要进行(char)转换即可。) - Hot Licks
2
展示一下你的代码!否则我们只能猜测。 - abelenky
3个回答

19
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char *data = "01010110";
    char c = strtol(data, 0, 2);
    printf("%s = %c = %d = 0x%.2X\n", data, c, c, c);
    return(0);
}

输出:

01010110 = V = 86 = 0x56

参考资料:


6
您可以使用 strtol() 函数来解析字符串中的数字。最后一个参数(在本例中为 2)是用于转换的基数。
char c = strtol("01010110", (char **)NULL, 2);

有关此及其他数字解析函数的更多信息,请点击这里


-2

做了一些略微不同的事情:

从二进制中,我进行了数学计算,然后将整数简单地转换为字符。

int i;
char c = (char)i;

最终的转换是不言自明的;手舞足蹈地说“从二进制,我数学计算出整数”并没有任何有用的信息。 - Jonathan Leffler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接