Crates.io | nt-leb128 |
lib.rs | nt-leb128 |
version | 0.3.1 |
source | src |
created_at | 2018-08-12 03:04:25.896774 |
updated_at | 2019-12-02 17:57:19.407253 |
description | Read and write DWARF's "Little Endian Base 128" (LEB128) variable length integer encoding. (With modifications used for nt-rs) |
homepage | |
repository | https://github.com/Redrield/leb128 |
max_upload_size | |
id | 79051 |
size | 36,919 |
leb128
Read and write DWARF's "Little Endian Base 128" (LEB128) variable length integer encoding.
The implementation is a direct translation of the psuedocode in the DWARF 4 standard's appendix C.
Either
$ cargo add leb128
or add this to your Cargo.toml
:
[dependencies]
leb128 = "0.2.1"
use leb128;
let mut buf = [0; 1024];
// Write to anything that implements `std::io::Write`.
{
let mut writable = &mut buf[..];
leb128::write::signed(&mut writable, -12345).expect("Should write number");
}
// Read from anything that implements `std::io::Read`.
let mut readable = &buf[..];
let val = leb128::read::signed(&mut readable).expect("Should read number");
assert_eq!(val, -12345);
This crate comes with a leb128-repl
program that you can use after cargo install leb128
or by running cargo run
in clone of this repository.
$ leb128-repl
LEB128 Read-Eval-Print-Loop!
Converts numbers to signed and unsigned LEB128 and displays the results in
base-10, hex, and binary.
> 42
# unsigned LEB128
[42]
[2a]
[00101010]
# signed LEB128
[42]
[2a]
[00101010]
> -42
# unsigned LEB128
error
# signed LEB128
[86]
[56]
[01010110]
> 9001
# unsigned LEB128
[169, 70]
[a9, 46]
[10101001, 01000110]
# signed LEB128
[169, 198, 0]
[a9, c6, 0]
[10101001, 11000110, 00000000]
> -9001
# unsigned LEB128
error
# signed LEB128
[215, 185, 127]
[d7, b9, 7f]
[11010111, 10111001, 01111111]
>
Licensed under either of
LICENSE-APACHE
or http://www.apache.org/licenses/LICENSE-2.0)LICENSE-MIT
or http://opensource.org/licenses/MIT)at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.