header work
This commit is contained in:
36
src/main.rs
36
src/main.rs
@@ -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);
|
||||||
|
eprintln!("buffer = {:?}", buffer);
|
||||||
|
match read {
|
||||||
|
Ok(_c) => {
|
||||||
out.push(buffer[0]);
|
out.push(buffer[0]);
|
||||||
n += 8;
|
|
||||||
if n >= len {
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
Err(e) => {
|
||||||
|
println!("Problem {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
n += 8;
|
||||||
}
|
}
|
||||||
out
|
out
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user