在C中从二进制转换为char

Posted

技术标签:

【中文标题】在C中从二进制转换为char【英文标题】:Convert from a binary to char in C 【发布时间】:2012-06-05 05:10:20 【问题描述】:

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

例如,假设我有 01010110 并想从中打印相应的字母“V”。我该怎么做呢?

感谢您的帮助!

【问题讨论】:

你有“1010110”是什么意思?寄存器中的二进制数,1/0 字符,什么? (如果是二进制值,则只需 (char) 强制转换即可。) 给我们看代码!!否则我们只是在猜测。 【参考方案1】:
#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

参考资料:

strtol() Correct usage of strtol()

【讨论】:

【参考方案2】:

您可以使用strtol() 解析字符串上的数字。最后一个参数(在本例中为 2)是转换的基数。

char c = strtol("01010110", (char **)NULL, 2);

更多关于这个和其他数字解析函数here的信息。

【讨论】:

【参考方案3】:

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

从二进制文件中,我用数学方法计算了 int,然后简单地将 int 转换为 char。

int i;
char c = (char)i;

【讨论】:

最终转换不言而喻;挥手的“从二进制中,我用数学方法计算了 int”不包含任何有用的信息。

以上是关于在C中从二进制转换为char的主要内容,如果未能解决你的问题,请参考以下文章

将二进制文件从一个位置转换为字符串到另一个位置

二进制转换为string字符串?

将核心数据文件从二进制转换为 XML

Python从二进制字符串转换为十六进制

将向量从二进制强制转换为“as.numeric”时保留名称?

PHP如何将从二进制文件中读取的字节转换为数字