write and read with len at first
This commit is contained in:
@@ -27,3 +27,22 @@ pub fn string_to_binary(bits: &str) -> Vec<u8> {
|
|||||||
|
|
||||||
bytes
|
bytes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn binary_to_string(bytes: Vec<u8>, 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
|
||||||
|
}
|
||||||
|
|||||||
34
src/main.rs
34
src/main.rs
@@ -6,7 +6,7 @@ use std::io::prelude::*;
|
|||||||
mod byte_writer;
|
mod byte_writer;
|
||||||
mod node;
|
mod node;
|
||||||
|
|
||||||
use byte_writer::string_to_binary;
|
use byte_writer::{binary_to_string, string_to_binary};
|
||||||
use node::Node;
|
use node::Node;
|
||||||
|
|
||||||
fn main() -> std::io::Result<()> {
|
fn main() -> std::io::Result<()> {
|
||||||
@@ -26,13 +26,33 @@ fn main() -> std::io::Result<()> {
|
|||||||
let root = node::create_tree(vec);
|
let root = node::create_tree(vec);
|
||||||
eprintln!("root.n = {:#?}", root.n);
|
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();
|
eprintln!("v = {:?}", v);
|
||||||
file2.read_to_end(&mut buffer)?;
|
eprintln!("len = {:?}", len);
|
||||||
eprintln!("v = {:#?}", v);
|
file2.write_all(&len)?;
|
||||||
eprintln!("buffer = {:#?}", buffer);
|
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)?;
|
//writeln!(file2, "{}", tes;t)?;
|
||||||
//file2.write_all(&test.to_be_bytes())?;
|
//file2.write_all(&test.to_be_bytes())?;
|
||||||
//file2.write_all(&[*key as u8])?;
|
//file2.write_all(&[*key as u8])?;
|
||||||
|
|||||||
Reference in New Issue
Block a user