Каков самый простой способ поместить строку с 0 влево?

Самый простой способ поместить строку с 0 влево, чтобы

  • "110" = "00000110"

  • "11110000" = "11110000"

Я попытался использовать format! макрос, но он только прокладывает вправо с пространством:

format!("{:08}", string);

Ответ 1

В документации модуля fmt описаны все параметры форматирования:

Заполнить/Выравнивание

Символ заполнения предоставляется обычно вместе с параметром width. Это указывает на то, что если форматируемое значение меньше width вокруг него будут напечатаны дополнительные символы. Дополнительные символы указываются с помощью fill, и выравнивание может быть одним из следующих параметров:

  • < - аргумент выравнивается по левому краю в столбцах width
  • ^ - аргумент выравнивается по центру в столбцах width
  • > - аргумент выравнивается по width столбцов по width

assert_eq!("00000110", format!("{:0>8}", "110"));
//                                |||
//                                ||+-- width
//                                |+--- align
//                                +---- fill

Смотрите также:

Ответ 2

В качестве альтернативы ответу 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);