文字列の左側に0を埋め込む最も簡単な方法は何ですか。
"110" = "00000110"
"11110000" = "11110000"
私はformat!
マクロを使用しようとしましたが、それはスペースで右側を埋めるだけです:
format!("{:08}", string);
fmt
module documentation は、すべてのフォーマットオプションについて説明しています。
塗りつぶし/配置
フィル文字は通常、
width
パラメータと組み合わせて提供されます。これは、フォーマットされている値がwidth
より小さい場合、その周りに余分な文字が印刷されることを示しています。余分な文字はfill
で指定され、配置は次のオプションのいずれかになります。
<
-引数はwidth
列で左揃えされます^
-引数はwidth
列で中央揃えになります>
-引数はwidth
列で右揃えされます
assert_eq!("00000110", format!("{:0>8}", "110"));
// |||
// ||+-- width
// |+--- align
// +---- fill
以下も参照してください。
シェプマスターの答えの代わりに、文字列ではなく実際に数値で開始していて、それをバイナリとして表示したい場合、フォーマットする方法は次のとおりです。
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);