Перейти к содержанию

Утилиты

Утилиты

bytesToHex

const hex = bytesToHex(new Uint8Array([0xde, 0xad, 0xbe, 0xef]));
// "deadbeef"
  • bytes – массив произвольной длины.
  • byteSize (необязателен) – если указан, выход дополняется ведущими нулями до byteSize * 2 символов.

bytesToInt

const n = bytesToInt(new Uint8Array([0xff, 0x01]));
// 65281n

Возвращает беззнаковое число bigint.


hexToBytes

const buf = hexToBytes("deadbeef");
// Uint8Array(4) [ 222, 173, 190, 239 ]
  • Требование: длина строки чётная; иначе будет выброшено исключение.

hexToInt

const n = hexToInt("ff01");
// 65281n

intToBytes

const buf = intToBytes(0x1234n, 4);
// Uint8Array(4) [ 0, 0, 18, 52 ]
  • byteSize – опциональная фиксированная длина. Если передано, результат дополняется ведущими нулями.
  • При передаче number внутренняя конвертация выполняется через BigInt().

intToHex

const hex = intToHex(4660, 4);
// 00001234

Аналогично intToBytes, но возвращает строку.


randomBytes

1
2
3
4
5
6
7
const nonce = randomBytes(24);
// Uint8Array(24) [
//  133, 199,  42,  72, 64, 23, 157,
//   73, 233, 145,  94, 63, 78,  17,
//   24,  13, 182, 185, 52, 29,  38,
//  171, 215, 234
//]
  • Делегирует вызов @noble/hashes/utils::randomBytes, который использует крипто-надёжный генератор платформы (Web Crypto в браузере / node:crypto в Node.js).
  • Гарантировано возвращает буфер ровно указанной длины.

Заметки

  1. Все функции не изменяют переданные буферы — всегда создаётся новый объект.
  2. intToHex и intToBytes принимают как number, так и bigint; однако для значений > 2^53 следует использовать bigint, чтобы избежать потери точности.
  3. При работе с ключами и хешами задавайте byteSize, чтобы гарантировать фиксированную длину (например, 32 байта / 64 символа).