]> git.codecow.com Git - libnemo.git/commitdiff
Refactor bytes-to-hex converter to eliminate function call overhead for big performan...
authorChris Duncan <chris@codecow.com>
Thu, 2 Jul 2026 15:40:34 +0000 (08:40 -0700)
committerChris Duncan <chris@codecow.com>
Thu, 2 Jul 2026 15:40:34 +0000 (08:40 -0700)
src/lib/constants.ts
src/lib/convert/bytes.ts

index 7889cb2df3dc653c6b6323a2c42ab0418dd30b09..1706e6904b7e9d7461e072a946510da7acc86c9e 100644 (file)
@@ -12,6 +12,7 @@ export const BURN_PUBLIC_KEY = '000000000000000000000000000000000000000000000000
 export const DIFFICULTY_RECEIVE = 0xfffffe0000000000n
 export const DIFFICULTY_SEND = 0xfffffff800000000n
 export const HARDENED_OFFSET = 0x80000000
+export const HEXCHAR = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
 export const MAX_RAW = 0xFFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFFn
 export const MAX_SUPPLY = 133_248_297_920_938_463_463_374_607_431_768_211_455n
 export const NONCE_LENGTH = 24
index acb6031c36df5034c9645d0d094cbd24d497da39..52e2d95f376f566afe748702c11f6abbdf54e3aa 100644 (file)
@@ -1,7 +1,7 @@
 //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
 //! SPDX-License-Identifier: GPL-3.0-or-later
 
-import { ALPHABET } from '../constants'
+import { ALPHABET, HEXCHAR } from '../constants'
 
 const decoder: TextDecoder = new TextDecoder()
 
@@ -76,11 +76,11 @@ export const bytes = Object.freeze({
         */
        toHex (bytes: ArrayBuffer | Uint8Array): string {
                if (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes)
-               if (bytes.buffer instanceof ArrayBuffer && bytes.buffer.byteLength === 0) return ''
-               return [...bytes]
-                       .map(byte => byte.toString(16).padStart(2, '0'))
-                       .join('')
-                       .toUpperCase()
+               let hex: string = ''
+               for (const byte of bytes) {
+                       hex += HEXCHAR[byte >> 4] + HEXCHAR[byte & 15]
+               }
+               return hex
        },
 
        /**