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

不羁的心 提交于 2019-12-05 14:35:12

问题


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);

回答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 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



回答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);


来源:https://stackoverflow.com/questions/50458144/what-is-the-easiest-way-to-pad-a-string-with-0-to-the-left

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!