webdevqa.jp.net

文字列の左側に0を埋め込む最も簡単な方法は何ですか?

文字列の左側に0を埋め込む最も簡単な方法は何ですか。

  • "110" = "00000110"

  • "11110000" = "11110000"

私はformat!マクロを使用しようとしましたが、それはスペースで右側を埋めるだけです:

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

fmt module documentation は、すべてのフォーマットオプションについて説明しています。

塗りつぶし/配置

フィル文字は通常、widthパラメータと組み合わせて提供されます。これは、フォーマットされている値がwidthより小さい場合、その周りに余分な文字が印刷されることを示しています。余分な文字はfillで指定され、配置は次のオプションのいずれかになります。

  • <-引数はwidth列で左揃えされます
  • ^-引数はwidth列で中央揃えになります
  • >-引数はwidth列で右揃えされます

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

以下も参照してください。

34
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);
6
Peter Hall