header work

This commit is contained in:
2025-04-08 22:30:58 +02:00
parent aa84d3c668
commit a319d2aab1

View File

@@ -53,29 +53,22 @@ fn main() -> std::io::Result<()> {
let mut to_print = File::open(f)?; let mut to_print = File::open(f)?;
let mut buffer = [0u8; 4]; let mut buffer = [0u8; 4];
to_print.read_exact(&mut buffer)?; to_print.read_exact(&mut buffer)?;
eprintln!("buffer = {:?}", buffer);
let mut len_head = u32::from_be_bytes(buffer); let mut len_head = u32::from_be_bytes(buffer);
to_print.read_exact(&mut buffer)?; to_print.read_exact(&mut buffer)?;
eprintln!("buffer = {:?}", buffer);
let len_tree = u32::from_be_bytes(buffer); let len_tree = u32::from_be_bytes(buffer);
eprintln!("len_head = {:?}", len_head); //eprintln!("len_head = {:?}", len_head);
eprintln!("len_tree = {:?}", len_tree); //eprintln!("len_tree = {:?}", len_tree);
let len_chars = len_head - len_tree; let len_chars = len_head - len_tree;
eprintln!("len_chars = {:?}", len_chars);
let tree_bin = read_n_bytes(&mut to_print, len_tree); let tree_bin = read_n_bytes(&mut to_print, len_tree);
eprintln!("tree_bin = {:?}", tree_bin);
let tree_str = binary_to_string(tree_bin, len_tree); let tree_str = binary_to_string(tree_bin, len_tree);
eprintln!("tree_str = {:?}", tree_str); //eprintln!("tree_str = {:?}", tree_str);
let chars_bin = read_n_bytes(&mut to_print, len_chars); let chars_bin = read_n_bytes(&mut to_print, len_chars);
eprintln!("chars_bin = {:?}", &chars_bin);
let chars_str = String::from_utf8(chars_bin).unwrap(); let chars_str = String::from_utf8(chars_bin).unwrap();
eprintln!("tree_str = {:?}", tree_str); let mut root = read_tree(&tree_str, &chars_str.chars().collect());
eprintln!("chars_str = {:?}", chars_str); let txt = tree_to_string(&mut root);
//let mut root = read_tree(&tree_str, &chars_str.chars().collect()); eprintln!("txt = {:?}", txt);
//let txt = tree_to_string(&mut root);
//eprintln!("txt = {:?}", txt);
} }
None => { None => {
println!("No file name!"); println!("No file name!");
@@ -176,14 +169,19 @@ fn nodes_at_vec(map: HashMap<char, i32>) -> Vec<Node> {
fn read_n_bytes(file: &mut File, len: u32) -> Vec<u8> { fn read_n_bytes(file: &mut File, len: u32) -> Vec<u8> {
let mut n = 0; let mut n = 0;
let mut out: Vec<u8> = Vec::new(); let mut out: Vec<u8> = Vec::new();
let mut buffer = [0u8, 1]; let mut buffer = vec![0u8; 1];
loop { while n < len {
let _ = file.read_exact(&mut buffer); let read = file.read_exact(&mut buffer);
out.push(buffer[0]); eprintln!("buffer = {:?}", buffer);
n += 8; match read {
if n >= len { Ok(_c) => {
break; out.push(buffer[0]);
}
Err(e) => {
println!("Problem {}", e);
}
} }
n += 8;
} }
out out
} }