diff --git a/fo.txt b/fo.txt index eea1bf0..23d2746 100644 Binary files a/fo.txt and b/fo.txt differ diff --git a/src/byte_writer.rs b/src/byte_writer.rs index 90e2710..840ca2f 100644 --- a/src/byte_writer.rs +++ b/src/byte_writer.rs @@ -27,3 +27,22 @@ pub fn string_to_binary(bits: &str) -> Vec { bytes } + +pub fn binary_to_string(bytes: Vec, len: u32) -> String { + let mut binary = String::new(); + let mut n = 0; + for b in bytes { + let mut current = b; + while n < len && current > 0 { + if current % 2 == 1 { + binary.push('1'); + } else { + binary.push('0'); + } + current >>= 1; + n += 1; + } + } + + binary +} diff --git a/src/main.rs b/src/main.rs index 33134c7..66fea49 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,7 +6,7 @@ use std::io::prelude::*; mod byte_writer; mod node; -use byte_writer::string_to_binary; +use byte_writer::{binary_to_string, string_to_binary}; use node::Node; fn main() -> std::io::Result<()> { @@ -26,13 +26,33 @@ fn main() -> std::io::Result<()> { let root = node::create_tree(vec); eprintln!("root.n = {:#?}", root.n); - let v = string_to_binary("101"); - //file2.write_all(&v)?; + /* + let v = string_to_binary("1010001010101010"); + let i: u32 = 16; + //eprintln!("v = {:?}", v); + let len = i.to_be_bytes(); - let mut buffer = Vec::new(); - file2.read_to_end(&mut buffer)?; - eprintln!("v = {:#?}", v); - eprintln!("buffer = {:#?}", buffer); + eprintln!("v = {:?}", v); + eprintln!("len = {:?}", len); + file2.write_all(&len)?; + file2.write_all(&v)?; + */ + + let mut buffer = [0u8; 4]; + file2.read_exact(&mut buffer)?; + eprintln!("buffer = {:?}", buffer); + let len = u32::from_be_bytes(buffer); + eprintln!("len = {:?}", len); + + let mut read = Vec::new(); + file2.read_to_end(&mut read)?; + eprintln!("read = {:?}", read); + //let current = read[4..].to_vec(); + let string = binary_to_string(read, len); + eprintln!("string = {:?}", string); + + //eprintln!("v = {:#?}", v); + //eprintln!("buffer = {:#?}", buffer); //writeln!(file2, "{}", tes;t)?; //file2.write_all(&test.to_be_bytes())?; //file2.write_all(&[*key as u8])?;