亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否有以二進制格式打印的printf轉換器?

是否有以二進制格式打印的printf轉換器?

C C++
躍然一笑 2019-06-03 13:28:13
是否有以二進制格式打印的printf轉換器?我可以用打印出來的十六進制或八進制數字打印。是否有格式標簽作為二進制或任意基數打印?我在管理GCC。printf("%d %x %o\n", 10, 10, 10); //prints "10 A 12\n" print("%b\n", 10); // prints "%b\n"
查看完整描述

3 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

但為我工作:


#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的內存問題和多次調用。


查看完整回答
反對 回復 2019-06-03
?
森林海

TA貢獻2011條經驗 獲得超2個贊

任何數據類型的打印二進制

//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;}


查看完整回答
反對 回復 2019-06-03
  • 3 回答
  • 0 關注
  • 1139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號