-
Notifications
You must be signed in to change notification settings - Fork 21
/
util.js
44 lines (38 loc) · 895 Bytes
/
util.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
'use strict'
const varint = require('varint')
const uint8ArrayToString = require('uint8arrays/to-string')
const uint8ArrayFromString = require('uint8arrays/from-string')
module.exports = {
numberToUint8Array,
uint8ArrayToNumber,
varintUint8ArrayEncode,
varintEncode
}
/**
* @param {Uint8Array} buf
*/
function uint8ArrayToNumber (buf) {
return parseInt(uint8ArrayToString(buf, 'base16'), 16)
}
/**
* @param {number} num
*/
function numberToUint8Array (num) {
let hexString = num.toString(16)
if (hexString.length % 2 === 1) {
hexString = '0' + hexString
}
return uint8ArrayFromString(hexString, 'base16')
}
/**
* @param {Uint8Array} input
*/
function varintUint8ArrayEncode (input) {
return Uint8Array.from(varint.encode(uint8ArrayToNumber(input)))
}
/**
* @param {number} num
*/
function varintEncode (num) {
return Uint8Array.from(varint.encode(num))
}