Friday, September 02, 2016

2進数 printf binary format

Example to printf in binary data ( for only data size <= uint32_t )

バイナリ形式にprintf出力したいが、いいサンプルが見つからなかったため、作成しました。

#include <stdio.h>
#include <stdint.h>
#include <limits.h>
#include <assert.h>

#define PRINTB(x) { \
        uint32_t sz = sizeof(x) * CHAR_BIT; \
        uint32_t va = 0; \
        assert(sz <= sizeof(uint32_t) * CHAR_BIT); \
        while (sz){ \
            va = 1 << (sz-1); \
            (x & va) ? printf("1") : printf("0") ; \
            va = 0; \
            sz = sz - 1; \
        } \
        printf("\n"); }

int main()
{
    char x = 0x1;
    PRINTB(x);

    return 0;
}

No comments: