What is the easiest way to pad a string with 0 to the left?
21,527
Solution 1
The fmt
module documentation describes all the formatting options:
Fill / Alignment
The fill character is provided normally in conjunction with the
width
parameter. This indicates that if the value being formatted is smaller thanwidth
some extra characters will be printed around it. The extra characters are specified byfill
, and the alignment can be one of the following options:
<
- the argument is left-aligned inwidth
columns^
- the argument is center-aligned inwidth
columns>
- the argument is right-aligned inwidth
columns
assert_eq!("00000110", format!("{:0>8}", "110"));
// |||
// ||+-- width
// |+--- align
// +---- fill
See also:
- How can I 0-pad a number by a variable amount when formatting with std::fmt?
- How do I print an integer in binary with leading zeros?
- Hexadecimal formating with padded zeroes
- Convert binary string to hex string with leading zeroes in Rust
Solution 2
As an alternative to Shepmaster's answer, if you are actually starting with a number rather than a string, and you want to display it as binary, the way to format that is:
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);
Related videos on Youtube
Author by
SeaEyeHay
Updated on June 07, 2020Comments
-
SeaEyeHay almost 4 years
What is the easiest way to pad a string with 0 to the left so that
"110" = "00000110"
"11110000" = "11110000"
I have tried to use the
format!
macro but it only pads to the right with space:format!("{:08}", string);
-
Evan Carroll over 2 yearsIt would be nice to see here succinctly how to specify fill, width, alignment, and the user-specified variable in one go as variables to
format!