How do I print an integer in binary with leading z

2020-02-13 07:43发布

I'm doing some bit twiddling and I'd like to print all the bits in my u16.

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

This prints flags: 0b101100.

How do I make it print flags: 0b0000000000101100?

标签: rust
1条回答
男人必须洒脱
2楼-- · 2020-02-13 08:08
let flags = 0b0000000000101100u16;
println!("flags: {:#018b}", flags);

The 018 pads with zeros to a width of 18. That width includes 0b (length=2) plus a u16 (length=16) so 18 = 2 + 16. It must come between # and b.

Rust's fmt docs explain both leading zeros and radix formatting, but don't show how to combine them.

Here are u8, u16, and u32:

//                       Width  0       8      16      24      32
//                              |       |       |       |       |
println!("{:#010b}", 1i8);  // 0b00000001
println!("{:#018b}", 1i16); // 0b0000000000000001
println!("{:#034b}", 1i32); // 0b00000000000000000000000000000001
查看更多
登录 后发表回答