xbinary

bytes extended read write

Examples echo

```rust use bytes::{BufMut, Bytes}; use bytes::Buf; use xbinary::*;

fn main() { let mut w = XBWrite::new(); w.putu32le(0); w.putu32le(1000); w.writestringbit7len("cmd"); w.writestringu32lelen("cmd2"); w.bit7writeu32(111111); w.bit7writeu16(65535); w.putf64le(0.555); w.setposition(0); let len=w.len() as u32; w.putu32le( len- 4); let buff = w.flush(); println!("{:#x?}",buff.tovec()); let mut r = XBRead::new(Bytes::from(buff)); asserteq!(r.getu32le(),len - 4); asserteq!(r.getu32le(),1000); asserteq!(r.readstringbit7len().unwrap(),"cmd"); asserteq!(r.readstringu32le().unwrap(),"cmd2"); let (offset,v)=r.readbit7u32(); asserteq!(v,111111); r.advance(offset); let (offset,v)=r.readbit7u16(); asserteq!(v,65535); r.advance(offset); asserteq!(r.getf64le(),0.555); } ```