相关疑难解决方法(0)

如何通过printf打印二进制数

可能重复:
是否有printf转换器以二进制格式打印?

这是我的计划

#include<stdio.h>
int main ()
{
    int i,a=2;
    i=~a;
    printf("a=%d\ni=%d\n",a,i);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

a=2
i=-3
Run Code Online (Sandbox Code Playgroud)

我希望这个以二进制打印.%x,%o和%d是十六进制,八进制和十进制数,但是什么用于在printf中打印二进制文件?

c binary printf

35
推荐指数
2
解决办法
26万
查看次数

使用C在二进制表示中打印int

我正在寻找一个允许我打印int的二进制表示的函数.到目前为止我所拥有的是什么;

char *int2bin(int a)
{
 char *str,*tmp;
 int cnt = 31;
 str = (char *) malloc(33); /*32 + 1 , because its a 32 bit bin number*/
 tmp = str;
 while ( cnt > -1 ){
      str[cnt]= '0';
      cnt --;
 }
 cnt = 31;
 while (a > 0){
       if (a%2==1){
           str[cnt] = '1';
        }
      cnt--;
        a = a/2 ;
 }
 return tmp;

}
Run Code Online (Sandbox Code Playgroud)

但是当我打电话时

printf("a %s",int2bin(aMask)) // aMask = 0xFF000000
Run Code Online (Sandbox Code Playgroud)

我输出像;

0000000000000000000000000000000000xtpYy(还有一堆未知字符.

这是函数中的缺陷还是我打印字符数组的地址或什么?对不起,我只是看不出我出错的地方.

NB代码来自这里

编辑:这不是家庭作业FYI,我正在尝试用不熟悉的语言调试别人的图像处理程序.然而,如果它被标记为家庭作业,因为它是一个基本概念,然后公平竞争.

c binary integer

23
推荐指数
3
解决办法
9万
查看次数

C打印位

我试图在C中编写一个打印int的程序.由于某种原因我得到错误的价值观,

void printBits(unsigned int num){
    unsigned int size = sizeof(unsigned int);
    unsigned int maxPow = 1<<(size*8-1);
    printf("MAX POW : %u\n",maxPow);
    int i=0,j;
    for(;i<size;++i){
        for(j=0;j<8;++j){
            // print last bit and shift left.
            printf("%u ",num&maxPow);
            num = num<<1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题,首先是为什么我得到这个结果(对于printBits(3)).

最大电平:2147483648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 2147483648 214748364 8

第二是有更好的方法吗?

c

10
推荐指数
3
解决办法
5万
查看次数

标签 统计

c ×3

binary ×2

integer ×1

printf ×1