pub fn read_sint<B: ByteSlice, T: FromPrimitive>(
    buf: B
) -> Result<(T, usize), Error>