@thi.ng/hex
Version:
Hex string formatters for 4/8/16/24/32/48/64bit words, hexdump formatting of binary data
223 lines • 6 kB
TypeScript
/**
* Hex digits
*/
export declare const HEX = "0123456789abcdef";
/**
* Returns 4bit uint as hex string
*
* @param x -
*/
export declare const U4: (x: number) => string;
/**
* Returns 8bit uint as hex string
*
* @param x -
*/
export declare const U8: (x: number) => string;
/**
* Returns hex string of 8bit uint, read from given byte array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U8A: (x: ArrayLike<number>, i: number) => string;
/**
* Returns 16bit uint as hex string
*
* @param x -
*/
export declare const U16: (x: number) => string;
/**
* Returns hex string of 16bit uint, read in big-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U16BE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns hex string of 16bit uint, read in litte-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U16LE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns 24bit uint as hex string
*
* @param x -
*/
export declare const U24: (x: number) => string;
/**
* Returns hex string of 24bit uint, read in big-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U24BE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns hex string of 24bit uint, read in litte-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U24LE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns 32bit uint as hex string
*
* @param x -
*/
export declare const U32: (x: number) => string;
/**
* Returns hex string of 32bit uint, read in big-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U32BE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns hex string of 32bit uint, read in litte-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U32LE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns 48bit uint as hex string
*
* @param x -
*/
export declare const U48: (x: number) => string;
/**
* Similar to {@link U48}, but takes the 64bit arg as 2x 32bit values.
*
* @param hi -
* @param lo -
*/
export declare const U48HL: (hi: number, lo: number) => string;
/**
* Returns hex string of 48bit uint, read in big-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U48BE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns hex string of 48bit uint, read in litte-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U48LE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns 64bit uint as hex string.
*
* @remarks
* Note: JS numbers are only integer precise up to `2**53 - 1`. Use
* {@link U64BE} or {@link U64LE} for byte array based values (full 64bit range
* supported). Alternatively, use `BigInt(x).toString(16)`.
*
* Also see {@link U64BIG} for `bigint` version.
*
* @param x -
*/
export declare const U64: (x: number) => string;
/**
* Returns 64bit bigint as hex string.
*
* @param x
*/
export declare const U64BIG: (x: bigint) => string;
/**
* Similar to {@link U64}, but takes the 64bit arg as 2x 32bit values.
*
* @param hi -
* @param lo -
*/
export declare const U64HL: (hi: number, lo: number) => string;
/**
* Returns hex string of 64bit uint, read in big-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U64BE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns hex string of 64bit uint, read in litte-endian order from given byte
* array at index `i`.
*
* @param x -
* @param i -
*/
export declare const U64LE: (x: ArrayLike<number>, i: number) => string;
/**
* Returns UUID formatted string of given byte array from optional start index
* `i` (default: 0). Array must have min. length 16 (starting from `i`).
*
* @param id -
* @param i -
*/
export declare const uuid: (id: ArrayLike<number>, i?: number) => string;
/**
* Takes a byte array, and optional start address, length and other opts.
* Produces a hexdump as string.
*
* @remarks
* Also see {@link printHexdump}, {@link hexdumpLines}.
*
* @example
* ```ts tangle:../export/hexdump.ts
* import { printHexdump } from "@thi.ng/hex";
*
* const bytes = new TextEncoder().encode("Hellö Wørld! 👋🤝🫶 ...so long!");
* printHexdump(bytes);
*
* // 00000000 48 65 6c 6c c3 b6 20 57 c3 b8 72 6c 64 21 20 f0 Hell.. W..rld! .
* // 00000010 9f 91 8b f0 9f a4 9d f0 9f ab b6 20 2e 2e 2e 73 ........... ...s
* // 00000020 6f 20 6c 6f 6e 67 21 o long!
* ```
*
* @param bytes
* @param addr
* @param len
* @param width
* @param ascii
*/
export declare const hexdump: (bytes: Uint8Array | Uint8ClampedArray, addr?: number, len?: number, width?: number, ascii?: boolean) => string;
/**
* Syntax sugar for `console.log(hexdump(...))`.
*
* @param bytes
* @param addr
* @param len
* @param width
* @param ascii
*/
export declare const printHexdump: (bytes: Uint8Array | Uint8ClampedArray, addr?: number, len?: number, width?: number, ascii?: boolean) => void;
/**
* Takes a byte array, and optional start address, length and other opts.
* Produces a hexdump as string array.
*
* @remarks
* The `width` arg specifies the number of bytes per line. The `ascii` flag
* indicates if the bytes of each row should also be formatted as ASCII in an
* additional column (non-printable ASCII values are represented as `.`).
*
* Also see {@link printHexdump}, {@link hexdumpLines}.
*
* @param bytes
* @param addr
* @param len
* @param width
* @param ascii
*/
export declare const hexdumpLines: (bytes: Uint8Array | Uint8ClampedArray, addr?: number, len?: number, width?: number, ascii?: boolean) => string[];
//# sourceMappingURL=index.d.ts.map