C 如何将无符号字符转换为二进制表示
我试图将无符号字符转换为十六进制ASCII值,但采用二进制形式 例如: 无符号字符C 到 0100011(43) 我可以从十六进制到二进制,问题是从char到它的十六进制值C 如何将无符号字符转换为二进制表示,c,char,hex,unsigned-char,C,Char,Hex,Unsigned Char,我试图将无符号字符转换为十六进制ASCII值,但采用二进制形式 例如: 无符号字符C 到 0100011(43) 我可以从十六进制到二进制,问题是从char到它的十六进制值 for (n = 0; n < 8; n++){ binary[n] = (letter >> n) & 1;} (n=0;n>n)&1;} 我总是得到错误的值,因为字母是作为它自己的ASCII值而不是十六进制ASCII值的二进制版本输入的。我想你是在一个接一个地挑选位,你只是按照与你想
for (n = 0; n < 8; n++){
binary[n] = (letter >> n) & 1;}
(n=0;n<8;n++)的{
二进制[n]=(字母>>n)&1;}
我总是得到错误的值,因为字母是作为它自己的ASCII值而不是十六进制ASCII值的二进制版本输入的。我想你是在一个接一个地挑选位,你只是按照与你想要的相反的顺序得到它们 这项工作:
#include <stdio.h>
int main() {
unsigned char letter = 'C';
int binary[8];
for(int n = 0; n < 8; n++)
binary[7-n] = (letter >> n) & 1;
/* print result */
for(int n = 0; n < 8; n++)
printf("%d", binary[n]);
printf("\n");
return 0;
}
#包括
int main(){
无符号字符字母='C';
整数二进制[8];
对于(int n=0;n<8;n++)
二进制[7-n]=(字母>>n)&1;
/*打印结果*/
对于(int n=0;n<8;n++)
printf(“%d”,二进制[n]);
printf(“\n”);
返回0;
}
运行它可以得到您想要的01000011。代码应该可以工作,您只是从右到左读取它。还要注意,如果它真的是无符号字符,否则您可能会遇到算术移位的问题。如果您需要更多帮助,请尝试为代码提供更多的上下文(您如何获得字母、您期望得到什么、您实际得到什么、您如何打印结果等),改为尝试
(int n=7;n>=0;n--)
。@风向标不会产生另一个结果<代码>字母永远不会更改。@Ordossen显示代码后,有符号字符
不会有问题,只要字符
至少有8位宽。@JavaNewbie请给我们看一些错误的值。到目前为止,我在您提供的代码中没有看到任何真正的错误。可能错误在程序的其他部分。如果你给我们看一本书,会有很大帮助的。