diff --git a/src/main.rs b/src/main.rs index 7c1f557..f36691d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -#![feature(seek_convenience)] +//#![feature(seek_convenience)] #![allow(unused_imports)] use byteorder::{BigEndian, LittleEndian, ReadBytesExt, WriteBytesExt}; use bit_vec::BitVec; @@ -44,7 +44,7 @@ fn main() { field_header.field_name.clone(), get_symbols(&buf, &field_header), ); - //get_rows(&buf, &field_header) + get_rows(&buf, &field_header, &qvd_structure) } } // println!("{:?}", symbol_map); @@ -67,10 +67,18 @@ fn get_symbols(buf: &[u8], field: &QvdFieldHeader) -> Symbol { } } -// fn get_rows(buf: &[u8], field: &QvdFieldHeader, qvd_structure: &QvdTableHeader) -> Symbol { -// let start = qvd_structure.offset + field.bit_offset; -// let end = start + field.bit_width; -// } +fn get_rows(buf: &[u8], field: &QvdFieldHeader, qvd: &QvdTableHeader) { + let start = qvd.offset; + let end = buf.len(); + let rows_section = &buf[start..end]; + + let chunks = buf.chunks(qvd.record_byte_size); + + for chunk in chunks { + let bits = BitVec::from_bytes(chunk); + println!("bits - {:?}", bits); + } +} fn get_xml_data(file_name: &String) -> Result { match read_file(&file_name) { @@ -226,10 +234,15 @@ mod tests { let mut v: Vec = Vec::new(); for val in y { match val { - True => v.push(1), - False => v.push(0) + true => v.push(1), + false => v.push(0) } } - println!("{:?}", v); + + let mut iter = v.chunks(16); + for chunk in iter { + println!("{:?}", chunk); + } + } } diff --git a/src/qvd_structure.rs b/src/qvd_structure.rs index 673ddcc..5e18acf 100644 --- a/src/qvd_structure.rs +++ b/src/qvd_structure.rs @@ -12,7 +12,7 @@ pub struct QvdTableHeader { #[serde(rename = "NoOfRecords")] pub no_of_records: u32, #[serde(rename = "RecordByteSize")] - pub record_byte_size: u32, + pub record_byte_size: usize, #[serde(rename = "Offset")] pub offset: usize, #[serde(rename = "Length")]