bytes to string fix

This commit is contained in:
2025-04-08 10:10:25 +02:00
parent 9a1839ce1f
commit 9cca37fa05
3 changed files with 26 additions and 19 deletions

View File

@@ -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

View File

@@ -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();