encoding::hex
This module implements hexadecimal encoding and decoding.
A stream-based encoding and decoding interface is available via newencoder and newdecoder, which transparently encode or decode bytes to or from hexadecimal representation when writing to or reading from an underlying I/O handle.
Convenience functions for encoding a byte slice into a hexadecimal string or decoding from a string into a byte slice are also available; see encodestr and decodestr. These functions dynamically allocate their return values; use the stream interface if you require static allocation.
Note that writes are always encoded as lowercase hexidecimal characters, but the functions in this module can decode both upper- and lower-case hexidecimal characters.
Index
Types
type decoder = struct {
stream: io::stream,
in: io::handle,
state: (void | io::EOF | io::error),
};
type encoder = struct {
stream: io::stream,
out: io::handle,
err: (void | io::error),
};
Functions
fn decodestr(s: str) ([]u8 | io::error);
fn dump(out: io::handle, data: []u8, addr: u64 = 0) (void | io::error);
fn encode(out: io::handle, in: []u8) (size | io::error);
fn encodestr(in: []u8) str;
fn newdecoder(in: io::handle) decoder;
fn newencoder(out: io::handle) encoder;
Types
type decoder
Show undocumented member
type decoder = struct {
stream: io::stream,
in: io::handle,
state: (void | io::EOF | io::error),
};
type encoder
Show undocumented member
type encoder = struct {
stream: io::stream,
out: io::handle,
err: (void | io::error),
};
Functions
fn decodestr
fn decodestr(s: str) ([]u8 | io::error);
Decodes a string of hexadecimal bytes into a byte slice. The caller must free the return value.
fn dump
fn dump(out: io::handle, data: []u8, addr: u64 = 0) (void | io::error);
Outputs a dump of hex data alongside the offset and an ASCII representation (if applicable).
Example output:
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 03 00 3e 00 01 00 00 00 80 70 01 00 00 00 00 00 |..>......p......|
If the addr parameter is provided, the address column will start from this address (but the data slice will still be printed from index 0).
fn encode
fn encode(out: io::handle, in: []u8) (size | io::error);
Encodes a byte slice as a hexadecimal string and writes it to an io::handle.
fn encodestr
fn encodestr(in: []u8) str;
Encodes a byte slice as a hexadecimal string and returns it. The caller must free the return value.
fn newdecoder
fn newdecoder(in: io::handle) decoder;
Creates a stream that reads and decodes hexadecimal data from a secondary stream. This stream does not need to be closed, and closing it will not close the underlying stream.
fn newencoder
fn newencoder(out: io::handle) encoder;
Creates a stream that encodes writes as lowercase hexadecimal before writing them to a secondary stream. Closing this stream will not close the underlying stream.