按原样获取C中char变量的二进制内容

按原样获取C中char变量的二进制内容,c,character-encoding,char,C,Character Encoding,Char,有没有办法按原样打印char变量的二进制内容。表示不将变量转换为ASCII 比如说, char c = 1000001; printf("%c\n", c); 这张照片 A 但是我想在不将其转换为ascii的情况下进行显示,就像下面的一样 1000001 这可能吗?您可以通过以下方式完成 char c = 'C' char output[9]; itoa(c, output, 2); printf("%s\n", output); C中的字符保证为1字节,因此循环到8。 在每次迭代中,屏

有没有办法按原样打印char变量的二进制内容。表示不将变量转换为ASCII

比如说,

char c =  1000001;
printf("%c\n", c);
这张照片

A

但是我想在不将其转换为ascii的情况下进行显示,就像下面的一样

1000001

这可能吗?

您可以通过以下方式完成

char c = 'C'
char output[9];
itoa(c, output, 2);
printf("%s\n", output);
C中的字符保证为1字节,因此循环到8。 在每次迭代中,屏蔽最高阶位。 一旦你有了它,就把它打印成标准输出

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(int argc,char *argv[]) 
{
      char c =  1000001;
      int i;
      for (i = 0; i < 8; i++) {
          printf("%d", !!((c << i) & 0x80));
      }
      printf("\n");

      return 0;


 }
还有一个解决方案

char c = 'C';
int i = 0;
    for (i = 7; i >= 0; --i)
    {
        putchar( (c & (1 << i)) ? '1' : '0' );
    }
    putchar('\n');
charc='c';
int i=0;
对于(i=7;i>=0;--i)
{
putchar((c&(1可以尝试循环)

扫描你的角色,说“A”。 获取其ASCII(65)。 将65除以2直到商为零,将余数存储在数组/dynmalloc中。 反向读取数组

65/2 321 32/2 160 16/280 8/240 4/2 20 2/210
1/2 01

所以你想打印出字符的二进制表示,对吗?没错。这就是我想要的。@chakrapani好的,请看我的答案。c=1000001;不是字符。正确的是c=0b1000001;