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 buffer = [0u8; 4];
to_print.read_exact(&mut buffer)?;
eprintln!("buffer = {:?}", buffer);
let mut len_head = u32::from_be_bytes(buffer);
to_print.read_exact(&mut buffer)?;
eprintln!("buffer = {:?}", buffer);
let len_tree = u32::from_be_bytes(buffer);
eprintln!("len_head = {:?}", len_head);
eprintln!("len_tree = {:?}", len_tree);
//eprintln!("len_head = {:?}", len_head);
//eprintln!("len_tree = {:?}", 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);
eprintln!("tree_bin = {:?}", tree_bin);
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);
eprintln!("chars_bin = {:?}", &chars_bin);
let chars_str = String::from_utf8(chars_bin).unwrap();
eprintln!("tree_str = {:?}", tree_str);
eprintln!("chars_str = {:?}", chars_str);
//let mut root = read_tree(&tree_str, &chars_str.chars().collect());
//let txt = tree_to_string(&mut root);
//eprintln!("txt = {:?}", txt);
let mut root = read_tree(&tree_str, &chars_str.chars().collect());
let txt = tree_to_string(&mut root);
eprintln!("txt = {:?}", txt);
}
None => {
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> {
let mut n = 0;
let mut out: Vec<u8> = Vec::new();
let mut buffer = [0u8, 1];
loop {
let _ = file.read_exact(&mut buffer);
let mut buffer = vec![0u8; 1];
while n < len {
let read = file.read_exact(&mut buffer);
eprintln!("buffer = {:?}", buffer);
match read {
Ok(_c) => {
out.push(buffer[0]);
n += 8;
if n >= len {
break;
}
Err(e) => {
println!("Problem {}", e);
}
}
n += 8;
}
out
}