Я пытаюсь напечатать что-то вроде этого с помощью Rust:
Base: 0x40, length: 900
Base: 0x5500, length: 301
Прямо сейчас у меня есть:
println!("Base: {:>width$x}, length: {}", 67106, 54, width=10);
Base: 10622, length: 54
Есть ли способ заставить Rust включать префикс «0x»? Эти два не компилируются:
println!("Base: {:>width#$x}, length: {}", 67106, 54, width=10);
println!("Base: {:>width$#x}, length: {}", 67106, 54, width=10);
error: invalid format string: expected `'}'`, found `'#'`
--> src/main.rs:2:29
|
2 | println!("Base: {:>width#$x}, length: {}", 67106, 54, width=10);
| - ^ expected `}` in format string
| |
| because of this opening brace
|
= note: if you intended to print `{`, you can escape it using `{{`
error: invalid format string: expected `'}'`, found `'#'`
--> src/main.rs:3:30
|
3 | println!("Base: {:>width$#x}, length: {}", 67106, 54, width=10);
| - ^ expected `}` in format string
| |
| because of this opening brace
|
= note: if you intended to print `{`, you can escape it using `{{`
Лучшее, что у меня есть:
println!("Base: 0x{:0>8x}, length: {}", 67106, 54);
Base: 0x00010622, length: 54
Что, вероятно, хорошо, но мне любопытно, есть ли способ сделать это. Кроме того, я думал, что, возможно, это сработает, но не тут-то было:
println!("Base: {:>10}, length: {}", format_args!("{:#x}", 67106), 54);
Base: 0x10622, length: 54
1 ответ
println!("Base: {:>#10x}, length: {}", 0x40, 900);
Вам нужно поставить #
перед шириной, чтобы установить альтернативную форму. См. std::fmt
синтаксис для объяснения форматирования.
С width
, переданным в качестве аргумента, это будет:
println!("Base: {:>#width$x}, length: {}", 67106, 301, width=10);
Похожие вопросы
Новые вопросы
rust
Rust - это язык системного программирования без сборщика мусора, ориентированный на три цели: безопасность, скорость и параллелизм. Используйте этот тег для вопросов о коде, написанном на Rust. Используйте тег, относящийся к конкретному изданию, для вопросов, относящихся к коду, для которого требуется определенная редакция, например [rust-2018]. Используйте более конкретные теги для таких подтем, как [rust-cargo] и [rust-macros].