如何打印带有前导零的二进制整数?

Posted

技术标签:

【中文标题】如何打印带有前导零的二进制整数?【英文标题】:How do I print an integer in binary with leading zeros? 【发布时间】:2017-06-22 04:56:16 【问题描述】:

我正在做一些小玩意,我想打印我的 u16 中的所有位。

let flags = 0b0000000000101100u16;
println!("flags: :#b", flags);

这打印flags: 0b101100

如何让它打印flags: 0b0000000000101100

【问题讨论】:

【参考方案1】:
let flags = 0b0000000000101100u16;
println!("flags: :#018b", flags);

018 用零填充宽度为 18。该宽度包括 0b(长度=2)加上一个 u16(长度=16)所以 18 = 2 + 16。它必须#b之间。

Rust 的 fmt 文档解释了 leading zeros 和 radix formatting,但没有说明如何组合它们。

这里是 u8、u16 和 u32:

//                       Width  0       8      16      24      32
//                              |       |       |       |       |
println!(":#010b", 1i8);  // 0b00000001
println!(":#018b", 1i16); // 0b0000000000000001
println!(":#034b", 1i32); // 0b00000000000000000000000000000001

【讨论】:

如何在中间加上下划线以使其更具可读性? @AtulGopinathan 你需要一个定制的箱子。 ***.com/questions/26998485/… 0b:08b代替:#010b怎么样?推理8 比推理10 更容易。

以上是关于如何打印带有前导零的二进制整数?的主要内容,如果未能解决你的问题,请参考以下文章

在 Rust 中将二进制字符串转换为带有前导零的十六进制字符串

java_二进制的前导的零

将 int 转换为带前导零的十六进制

二进制的前导的零——mooc《零基础学Java语言》-(浙大翁凯)期末编程题

“意外的标记 。” JSON Parse 无法解析前导零的十进制

将十进制字符串 IP 掩码转换为带有尾随零的无符号整数