以二进制格式打印多字节整数

时间:2014-06-08 11:55:20

标签: c

我想以二进制格式打印给定的整数。我在下面看到了这个例子并尝试了它,但是我没有得到正确的多字节整数输出。

#include<stdio.h>
#define BYTETOBINARYPATTERN "%d%d%d%d%d%d%d%d"
#define BYTETOBINARY(byte)\
(byte & 0x80 ? 1 : 0), \
(byte & 0x40 ? 1 : 0), \
(byte & 0x20 ? 1 : 0), \
(byte & 0x10 ? 1 : 0), \
(byte & 0x08 ? 1 : 0), \
(byte & 0x04 ? 1 : 0), \
(byte & 0x02 ? 1 : 0), \
(byte & 0x01 ? 1 : 0)

int main(){
   // int a = (sizeof(int)*8);
    int a = 10;
    int m = 257; // takes two bytes
    /* For a Single byte integer */
    printf(BYTETOBINARYPATTERN"\n",BYTETOBINARY(a));
    /* For a multibyte integer */
    printf("M : "BYTETOBINARYPATTERN","BYTETOBINARYPATTERN"\n",BYTETOBINARY(m>>8),BYTETOBINARY(m));
    return 0;
}

输出:

00001010
M : 00000001,00000001

0 个答案:

没有答案