1 |
|
2 |
|
3 | import { U8_TO_HEX, U16_TO_HEX } from "../hex/alphabet.js";
|
4 |
|
5 |
|
6 | function hex(value) {
|
7 | const mod = value.length % 2;
|
8 | const length = value.length - mod;
|
9 | const dv = new DataView(value.buffer, value.byteOffset);
|
10 | let result = '';
|
11 |
|
12 | for (let i = 0; i < length; i += 2) {
|
13 | result += U16_TO_HEX[dv.getUint16(i)];
|
14 | }
|
15 |
|
16 | if (mod) {
|
17 | result += U8_TO_HEX[dv.getUint8(length)];
|
18 | }
|
19 |
|
20 | return result;
|
21 | }
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 | export function u8aToHex(value, bitLength = -1, isPrefixed = true) {
|
39 | const length = Math.ceil(bitLength / 8);
|
40 | return `${isPrefixed ? '0x' : ''}${!value || !value.length ? '' : length > 0 && value.length > length ? `${hex(value.subarray(0, length / 2))}…${hex(value.subarray(value.length - length / 2))}` : hex(value)}`;
|
41 | } |
\ | No newline at end of file |