Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the easiest way to pad a string with 0 to the left?

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); 
like image 886
SeaEyeHay Avatar asked May 22 '18 00:05

SeaEyeHay


People also ask

How can I pad a string with zeros on the left?

leftPad() method to left pad a string with zeros, by adding leading zeros to string.

How do I add 0 to a string?

The format() method of String class in Java 5 is the first choice. You just need to add "%03d" to add 3 leading zeros in an Integer. Formatting instruction to String starts with "%" and 0 is the character which is used in padding.

How do you zero a padding in Python?

Python String zfill() MethodThe zfill() method adds zeros (0) at the beginning of the string, until it reaches the specified length. If the value of the len parameter is less than the length of the string, no filling is done.

How do you add padding to a string?

The standard way to add padding to a string in Python is using the str. rjust() function. It takes the width and padding to be used. If no padding is specified, the default padding of ASCII space is used.


2 Answers

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 than width some extra characters will be printed around it. The extra characters are specified by fill, and the alignment can be one of the following options:

  • < - the argument is left-aligned in width columns
  • ^ - the argument is center-aligned in width columns
  • > - the argument is right-aligned in width 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
like image 171
Shepmaster Avatar answered Oct 03 '22 05:10

Shepmaster


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); 
like image 20
Peter Hall Avatar answered Oct 03 '22 07:10

Peter Hall