Add helper for pretty printing data

This commit is contained in:
Matt Bilker 2021-10-09 10:34:10 +00:00
parent 2f21bb8d9d
commit 28a699a184
No known key found for this signature in database
GPG Key ID: 69ADF8AEB6C8B5D1
2 changed files with 42 additions and 0 deletions

41
src/dump.rs Normal file
View File

@ -0,0 +1,41 @@
use std::cmp;
use std::fmt::Write;
#[allow(dead_code)]
fn dump(data: &[u8]) -> String {
let mut output = String::new();
if data.is_empty() {
output.push_str("\t--- Empty ---");
}
for i in (0..data.len()).step_by(16) {
let to_print = cmp::min(16, data.len() - i);
let to_pad = 16 - to_print;
let data = &data[i..i + to_print];
let _ = write!(output, " {:08x}", i);
for byte in data {
let _ = write!(output, " {:02x}", byte);
}
for _ in 0..to_pad {
output.push_str(" ");
}
output.push(' ');
output.extend(data.iter().map(|&c| {
if c < 0x20 || c >= 0x7f {
'.'
} else {
c as char
}
}));
output.push('\n');
}
output.push('\n');
output
}

View File

@ -19,6 +19,7 @@ use std::str;
use libc::RTLD_NEXT; use libc::RTLD_NEXT;
use serde::Deserialize; use serde::Deserialize;
mod dump;
mod format; mod format;
mod log; mod log;