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

BIN
fo.txt

Binary file not shown.

View File

@@ -28,20 +28,26 @@ pub fn string_to_binary(bits: &str) -> Vec<u8> {
bytes 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 binary = String::new();
let mut n = 0; //bytes.reverse();
for b in bytes { let mut word = Vec::new();
let mut current = b; for b in &bytes {
while n < len && current > 0 { let mut current = *b;
while current != 0b0000_0000 {
if current % 2 == 1 { if current % 2 == 1 {
binary.push('1'); word.push('1');
} else { } else {
binary.push('0'); word.push('0');
} }
current >>= 1; current >>= 1;
n += 1;
} }
word.reverse();
binary = binary + &word.iter().collect::<String>();
word = Vec::new();
}
for _ in 0..8 - len {
binary.pop();
} }
binary binary

View File

@@ -27,21 +27,22 @@ fn main() -> std::io::Result<()> {
eprintln!("root.n = {:#?}", root.n); eprintln!("root.n = {:#?}", root.n);
/* /*
let v = string_to_binary("1010001010101010"); let binary = "101100001";
let i: u32 = 16; let mut v = string_to_binary(binary);
let length = (binary.len() % 8) as u8;
//eprintln!("v = {:?}", v); //eprintln!("v = {:?}", v);
let len = i.to_be_bytes(); let len_bytes = length.to_be_bytes();
eprintln!("v = {:?}", v); eprintln!("v = {:?}", v);
eprintln!("len = {:?}", len); eprintln!("len = {:?}", len_bytes);
file2.write_all(&len)?; println!("101100001");
file2.write_all(&v)?; file2.write_all(&len_bytes)?;
*/ file2.write_all(&v)?;*/
let mut buffer = [0u8; 4]; let mut buffer = [0u8; 1];
file2.read_exact(&mut buffer)?; file2.read_exact(&mut buffer)?;
eprintln!("buffer = {:?}", buffer); eprintln!("buffer = {:?}", buffer);
let len = u32::from_be_bytes(buffer); let len = u8::from_be_bytes(buffer);
eprintln!("len = {:?}", len); eprintln!("len = {:?}", len);
let mut read = Vec::new(); let mut read = Vec::new();