是否有以二进制格式打印的printf转换器?

是否有以二进制格式打印的printf转换器?

我可以用打印出来的十六进制或八进制数字打印。是否有格式标签作为二进制或任意基数打印?

我在管理GCC。

printf("%d %x %o\n", 10, 10, 10); //prints "10 A 12\n"
print("%b\n", 10); // prints "%b\n"


跃然一笑
浏览 1078回答 3
3回答

慕哥9229398

但为我工作:#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"#define BYTE_TO_BINARY(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') printf("Leading text "BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(byte));用于多字节类型printf("m: "BYTE_TO_BINARY_PATTERN" "BYTE_TO_BINARY_PATTERN"\n",  BYTE_TO_BINARY(m>>8), BYTE_TO_BINARY(m));不幸的是,你需要所有额外的引号。这种方法具有宏的效率风险(不要将函数作为参数传递给BYTE_TO_BINARY),但在这里的其他建议中,避免了strcat的内存问题和多次调用。

森林海

任何数据类型的打印二进制//assumes little endianvoid printBits(size_t const size, void const * const ptr){     unsigned char *b = (unsigned char*) ptr;     unsigned char byte;     int i, j;     for (i=size-1;i>=0;i--)     {         for (j=7;j>=0;j--)         {             byte = (b[i] >> j) & 1;             printf("%u", byte);         }     }     puts("");}试验int main(int argv, char* argc[]){         int i = 23;         uint ui = UINT_MAX;         float f = 23.45f;         printBits(sizeof(i), &i);         printBits(sizeof(ui), &ui);         printBits(sizeof(f), &f);         return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP