bytes to string fix
This commit is contained in:
@@ -28,20 +28,26 @@ pub fn string_to_binary(bits: &str) -> Vec<u8> {
|
||||
bytes
|
||||
}
|
||||
|
||||
pub fn binary_to_string(bytes: Vec<u8>, len: u32) -> String {
|
||||
pub fn binary_to_string(bytes: Vec<u8>, len: u8) -> String {
|
||||
let mut binary = String::new();
|
||||
let mut n = 0;
|
||||
for b in bytes {
|
||||
let mut current = b;
|
||||
while n < len && current > 0 {
|
||||
//bytes.reverse();
|
||||
let mut word = Vec::new();
|
||||
for b in &bytes {
|
||||
let mut current = *b;
|
||||
while current != 0b0000_0000 {
|
||||
if current % 2 == 1 {
|
||||
binary.push('1');
|
||||
word.push('1');
|
||||
} else {
|
||||
binary.push('0');
|
||||
word.push('0');
|
||||
}
|
||||
current >>= 1;
|
||||
n += 1;
|
||||
}
|
||||
word.reverse();
|
||||
binary = binary + &word.iter().collect::<String>();
|
||||
word = Vec::new();
|
||||
}
|
||||
for _ in 0..8 - len {
|
||||
binary.pop();
|
||||
}
|
||||
|
||||
binary
|
||||
|
||||
23
src/main.rs
23
src/main.rs
@@ -27,21 +27,22 @@ fn main() -> std::io::Result<()> {
|
||||
eprintln!("root.n = {:#?}", root.n);
|
||||
|
||||
/*
|
||||
let v = string_to_binary("1010001010101010");
|
||||
let i: u32 = 16;
|
||||
//eprintln!("v = {:?}", v);
|
||||
let len = i.to_be_bytes();
|
||||
let binary = "101100001";
|
||||
let mut v = string_to_binary(binary);
|
||||
let length = (binary.len() % 8) as u8;
|
||||
//eprintln!("v = {:?}", v);
|
||||
let len_bytes = length.to_be_bytes();
|
||||
|
||||
eprintln!("v = {:?}", v);
|
||||
eprintln!("len = {:?}", len);
|
||||
file2.write_all(&len)?;
|
||||
file2.write_all(&v)?;
|
||||
*/
|
||||
eprintln!("v = {:?}", v);
|
||||
eprintln!("len = {:?}", len_bytes);
|
||||
println!("101100001");
|
||||
file2.write_all(&len_bytes)?;
|
||||
file2.write_all(&v)?;*/
|
||||
|
||||
let mut buffer = [0u8; 4];
|
||||
let mut buffer = [0u8; 1];
|
||||
file2.read_exact(&mut buffer)?;
|
||||
eprintln!("buffer = {:?}", buffer);
|
||||
let len = u32::from_be_bytes(buffer);
|
||||
let len = u8::from_be_bytes(buffer);
|
||||
eprintln!("len = {:?}", len);
|
||||
|
||||
let mut read = Vec::new();
|
||||
|
||||
Reference in New Issue
Block a user