UNPKG

@polkadot/util

Version:
36 lines (35 loc) 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hexToBn = hexToBn; const bn_js_1 = require("../bn/bn.js"); const stripPrefix_js_1 = require("./stripPrefix.js"); /** * @name hexToBn * @summary Creates a BN.js object from a hex string. * @description * `null` inputs returns a `BN(0)` result. Hex input values return the actual value converted to a BN. Anything that is not a hex string (including the `0x` prefix) throws an error. * @param _value The value to convert * @param _options Options to pass while converting * @param _options.isLe Convert using Little Endian * @param _options.isNegative Convert using two's complement * @example * <BR> * * ```javascript * import { hexToBn } from '@polkadot/util'; * * hexToBn('0x123480001f'); // => BN(0x123480001f) * ``` */ function hexToBn(value, { isLe = false, isNegative = false } = {}) { if (!value || value === '0x') { return new bn_js_1.BN(0); } const stripped = (0, stripPrefix_js_1.hexStripPrefix)(value); const bn = new bn_js_1.BN(stripped, 16, isLe ? 'le' : 'be'); // fromTwos takes as parameter the number of bits, which is the hex length // multiplied by 4 (2 bytes being 8 bits) return isNegative ? bn.fromTwos(stripped.length * 4) : bn; }