是否有以二进制格式打印的 printf 转换器? [英] Is there a printf converter to print in binary format?
本文介绍了是否有以二进制格式打印的 printf 转换器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我可以使用 printf
作为十六进制或八进制数打印.是否有格式标签可以打印为二进制或任意基数?
I can print with printf
as a hex or octal number. Is there a format tag to print as binary, or arbitrary base?
我正在运行 gcc.
printf("%d %x %o
", 10, 10, 10); //prints "10 A 12
"
print("%b
", 10); // prints "%b
"
推荐答案
Print Binary for Any Datatype
// Assumes little endian
void 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;
}
这篇关于是否有以二进制格式打印的 printf 转换器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文