//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
//! SPDX-License-Identifier: GPL-3.0-or-later
-function bigintToUintArray (out: Uint32Array<ArrayBuffer> | BigUint64Array<ArrayBuffer>, int: bigint): void {
- if (int < 0n) int = ~(int - 1n)
- const bits = out instanceof BigUint64Array ? 64n : 32n
- const mask = (1n << bits) - 1n
- for (let i = out.length - 1; i >= 0 && int > 0n; i--) {
- const v = int & mask
- out[i] = bits === 64n ? v : Number(v)
- int >>= bits
- }
-}
-
-export function bigintToU32 (int: bigint, length: number): Uint32Array<ArrayBuffer> {
- const u32 = new Uint32Array(length)
- bigintToUintArray(u32, int)
- return u32
-}
-
-export function bigintToU64 (int: bigint, length: number): BigUint64Array<ArrayBuffer> {
- const u64 = new BigUint64Array(length)
- bigintToUintArray(u64, int)
- return u64
-}
-
export function bigintFrom (value: bigint | boolean | number | string | unknown): bigint {
switch (typeof value) {
case 'bigint':
}
return int.toString(16).padStart(length, '0')
}
+
+export function bigintToU32 (int: bigint, length: number): Uint32Array<ArrayBuffer> {
+ const u32 = new Uint32Array(length)
+ bigintToUintArray(u32, int)
+ return u32
+}
+
+export function bigintToU64 (int: bigint, length: number): BigUint64Array<ArrayBuffer> {
+ const u64 = new BigUint64Array(length)
+ bigintToUintArray(u64, int)
+ return u64
+}
+
+function bigintToUintArray (out: Uint32Array<ArrayBuffer> | BigUint64Array<ArrayBuffer>, int: bigint): void {
+ if (int < 0n) int = ~(int - 1n)
+ const bits = out instanceof BigUint64Array ? 64n : 32n
+ const mask = (1n << bits) - 1n
+ for (let i = out.length - 1; i >= 0 && int > 0n; i--) {
+ const v = int & mask
+ out[i] = bits === 64n ? v : Number(v)
+ int >>= bits
+ }
+}