Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将无符号字符转换为二进制表示_C_Char_Hex_Unsigned Char - Fatal编程技术网

C 如何将无符号字符转换为二进制表示

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值的二进制版本输入的。我想你是在一个接一个地挑选位,你只是按照与你想

我试图将无符号字符转换为十六进制ASCII值,但采用二进制形式

例如:

无符号字符C 到 0100011(43)

我可以从十六进制到二进制,问题是从char到它的十六进制值

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请给我们看一些错误的值。到目前为止,我在您提供的代码中没有看到任何真正的错误。可能错误在程序的其他部分。如果你给我们看一本书,会有很大帮助的。