最简单的方法是将字符串填充为左侧的0,以便
" 110" =" 00000110"
" 11110000" =" 11110000"
我尝试使用format!
宏,但它只用空格填充到右边:
format!("{:08}", string);
答案 0 :(得分:18)
fmt
module documentation描述了所有格式选项:
Fill / Alignment
填充字符通常与。一起提供
width
参数。这表示如果格式化的值是 如果小于width
,则会在其周围打印一些额外的字符。 额外字符由fill
指定,对齐可以是 以下选项之一:
- 中左对齐
<
- 参数在width
列- 中居中对齐
^
- 参数在width
列- 中右对齐
>
- 参数在width
列
assert_eq!("00000110", format!("{:0>8}", "110"));
// ^^^ -- width
// || --- align
// | ---- fill
另见:
答案 1 :(得分:5)
作为Shepmaster答案的替代方案,如果你实际上是以数字而不是字符串开头,并且想要将其显示为二进制,那么格式化的方式是:
let n: u32 = 0b11110000;
// 0 indicates pad with zeros
// 8 is the target width
// b indicates to format as binary
let formatted = format!("{:08b}", n);