Quelle est la façon la plus simple de remplir une chaîne avec 0 à gauche pour que
"110" = "00000110"
"11110000" = "11110000"
J'ai essayé d'utiliser le format!
macro mais il ne garnit que vers la droite avec de l'espace:
format!("{:08}", string);
La documentation du module fmt
décrit toutes les options de formatage:
Remplissage/Alignement
Le caractère de remplissage est fourni normalement en conjonction avec le paramètre
width
. Cela indique que si la valeur en cours de formatage est inférieure àwidth
, certains caractères supplémentaires seront imprimés autour d'elle. Les caractères supplémentaires sont spécifiés parfill
, et l'alignement peut être l'une des options suivantes:
<
- l'argument est aligné à gauche dans les colonneswidth
^
- l'argument est aligné au centre dans les colonneswidth
>
- l'argument est aligné à droite dans les colonneswidth
assert_eq!("00000110", format!("{:0>8}", "110"));
// |||
// ||+-- width
// |+--- align
// +---- fill
Voir également:
Comme alternative à la réponse de Shepmaster, si vous commencez en fait par un nombre plutôt qu'une chaîne et que vous souhaitez l'afficher en binaire, la façon de formater c'est:
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);