Стандартные функции write_all и write из крейта std::fs позволяют записывать фрагменты строк (технически &[u8]?) в файлы.
Есть ли способ записать шестнадцатеричные числа непосредственно в файл?
Стандартные функции write_all и write из крейта std::fs позволяют записывать фрагменты строк (технически &[u8]?) в файлы.
Есть ли способ записать шестнадцатеричные числа непосредственно в файл?
Вы можете использовать эту функцию:
use std::io::{Result, BufWriter, Write};
fn write_hex<W: Write>(file: &mut BufWriter<W>, data: &[u8]) -> Result<()> {
for val in data {
write!(file, "{:02X}", val)?;
}
Ok(())
}
Поскольку он записывает каждое шестнадцатеричное число отдельно, требуется, чтобы вы использовали буферизованный поток. Вы можете создать его с помощью BufWriter::new(file)
. Вы можете изменить {:02X}
на {:02x}
, чтобы вместо этого писать шестнадцатеричный код нижнего регистра.
BufWriter
перед удалением.
- person Ömer Erden; 27.01.2020
u8
, в файлы (если только все ваши шестнадцатеричные числа меньше 256, и в этом случае вы можете просто поместить их в&[u8]
и записать это). Для этого см. этот вопрос а>. Две реализации: здесь или здесь. - person SCappella   schedule 12.01.2020format!("0x{:0>2X}", 15) -> "0x0F"
- person richardpringle   schedule 13.01.2020