我想读取一个文本文件,该文件的内部用空格分隔一些二进制数。例如:
01001000 01100101 01101100 01101100 01101111。
然后将每个数字转换为字符。例如,第一个是十进制的72。 ASCII中的72是“ H”。
问题:如果存在0b前缀,C可以将二进制解释为二进制。例如:0b01001000。在文件中,没有0b前缀,所以我不能做类似的事情:
int num = 0b01001000;
char h = num;
printf("%c", h);
我的下一个想法是将带有函数的二进制文件转换为小数并使用它们进行转换。喜欢:
char binaryToChar(int binary)
{
int remain, decimal = 0, base = 1;
while (binary > 0) {
remain = binary % 10;
decimal += remain * base;
binary /= 10;
base *= 2;
}
char ascii = decimal;
return ascii;
}
此方法的问题在于文件中的二进制数通常以0开头,因此C将它们作为八进制数进行处理。有解决这个问题的优雅方法吗?