gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:13:33 25 4
gpt4 key购买 nike

我可以使用 printf 打印十六进制或八进制数。是否有打印为二进制或任意基数的格式标记?

我正在运行 gcc。

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

最佳答案

Hacky 但对我有用:

#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。

关于c - 是否有 printf 转换器以二进制格式打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/111928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com