#byte #utf-8 #decode #data #hex #representation #vector

hex_d_hex

HexDHex is a Rust Crate that encodes and decodes byte data to and from its hexidecimal representation. For instance, one may wish, on ocasion that is, to translate a utf8 or ASCII string of hex byte data such as "0F12FF00A7" to a vector of u8s [15,18,255,0,167] or vise versa.

3 releases (stable)

Uses old Rust 2015

1.0.1 Oct 1, 2016
1.0.0 Sep 4, 2016
0.1.0 Sep 4, 2016

#1855 in Text processing

Download history 38/week @ 2024-07-20 54/week @ 2024-07-27 51/week @ 2024-08-03 41/week @ 2024-08-10 61/week @ 2024-08-17 32/week @ 2024-08-24 43/week @ 2024-08-31 40/week @ 2024-09-07 26/week @ 2024-09-14 53/week @ 2024-09-21 29/week @ 2024-09-28 28/week @ 2024-10-05 35/week @ 2024-10-12 19/week @ 2024-10-19 16/week @ 2024-10-26 15/week @ 2024-11-02

92 downloads per month
Used in 2 crates

MIT license

11KB
133 lines

HexDHex

Purpose

HexDHex is a Rust Crate that encodes and decodes byte data to and from its hexidecimal representation. For instance, one may wish, on ocasion that is, to translate a utf8 or ASCII string of hex byte data such as "0F12FF00A7" to a vector of u8s [15,18,255,0,167] or vise versa.

Namespace

HexDHex houses all functions at the top level of the crate. There are only three public functions and all are under the hex_d_hex namespace.

let hex_string = *hex_d_hex::capital_hex(&hex_vals);

Encoding

For the perspective of this crate, encoding is the process of taking a vector of raw byte data, or a vector of u8s, and translating it into an ACSII or UTF-8 compatable string. There are two methods, one that encodes with capital letters and the other that encodes with lower case letters. We seperated these methods as apposed to having a boolean parameter for performance reasons. Why make the ALU click twice when it can click once? Both methods return a box string, we wanted to make it on the heap to avoid unecessary copying. This has performance benifits and only a small dereference on declaration. See examples below.

Capital Encoding

let hex_vals: Vec<u8> = vec![15,18,255,0,167];
let hex_string = *hex_d_hex::capital_hex(&hex_vals);
assert_eq!(hex_string, "0F12FF00A7");

Lower Case Encoding

let hex_vals: Vec<u8> = vec![15,18,255,0,167];
let hex_string = *hex_d_hex::lower_hex(&hex_vals);
assert_eq!(hex_string, "0f12ff00a7");

Decoding

For the perspective of this crate, decoding is the process of taking a UTF-8 or ASCII string of hexidecimal bytes and converting it to a vector of u8s. It will consume both lower and capital case letters. See example below.

Universal Decoding

let hex_string = "0F12FF00a7";
let hex_vals = *hex_d_hex::dhex(hex_string);
assert_eq!(hex_vals[0], 15);
assert_eq!(hex_vals[1], 18);
assert_eq!(hex_vals[2], 255);
assert_eq!(hex_vals[3], 0);
// Should allow mix of capital and lower case letters
assert_eq!(hex_vals[4], 167);

No runtime deps