私はcでバイナリ値からcharに変換する方法に困惑しています。
たとえば、01010110があり、そこから対応する文字「V」を印刷したいとします。どうすればよいですか?
助けてくれてありがとう!
私はcでバイナリ値からcharに変換する方法に困惑しています。
たとえば、01010110があり、そこから対応する文字「V」を印刷したいとします。どうすればよいですか?
助けてくれてありがとう!
#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()
文字列の数値を解析するために使用できます。最後の引数 (この場合は 2) は、変換の基数です。
char c = strtol("01010110", (char **)NULL, 2);
この関数およびその他の数値解析関数の詳細については、こちら を参照してください。
少し違うことをしました:
バイナリから int を数学的に計算し、単に int を char にキャストしました。
int i;
char c = (char)i;