Add u8a <-> BN endian (#95)

This commit is contained in:
Jaco Greeff
2018-02-21 10:59:58 +01:00
committed by GitHub
parent 46df66c5ec
commit be7d5842de
8 changed files with 30 additions and 12 deletions
+3 -3
View File
@@ -9,7 +9,7 @@ const hexStripPrefix = require('./stripPrefix');
/**
@name hexToBn
@signature hexToBn (value?: string): BN
@signature hexToBn (value?: string, isLe: boolean = false): BN
@summary Creates a BN.js bignumber 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.
@@ -18,11 +18,11 @@ const hexStripPrefix = require('./stripPrefix');
hexToBn('0x123480001f'); // => BN(0x123480001f)
*/
module.exports = function hexToBn (value?: string): BN {
module.exports = function hexToBn (value?: string, isLe: boolean = false): BN {
// flowlint-next-line sketchy-null-string:off
if (!value) {
return new BN(0);
}
return new BN(hexStripPrefix(value) || '0', 16);
return new BN(hexStripPrefix(value) || '0', 16, isLe ? 'le' : 'be');
};
+8
View File
@@ -30,4 +30,12 @@ describe('hexToBn', () => {
)
).toEqual(true);
});
it('converts little-endian', () => {
expect(
hexToBn('0x4500000000000000', true).eq(
new BN(69)
)
).toEqual(true);
});
});
+4 -3
View File
@@ -10,7 +10,7 @@ const u8aToHex = require('./toHex');
/**
@name u8aToBn
@signature u8aToHex (value?: Uint8Array): BN
@signature u8aToHex (value?: Uint8Array, isLe: boolean = false): BN
@summary Creates a BN from a Uint8Array object.
@description
`UInt8Array` input values return the actual BN. `null` or `undefined` values returns an `0x0` value.
@@ -19,8 +19,9 @@ const u8aToHex = require('./toHex');
u8aToHex(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0xf])); // 0x68656c0f
*/
module.exports = function u8aToBn (value?: Uint8Array): BN {
module.exports = function u8aToBn (value?: Uint8Array, isLe: boolean = false): BN {
return hexToBn(
u8aToHex(value)
u8aToHex(value),
isLe
);
};
+9
View File
@@ -13,6 +13,15 @@ describe('u8aToBn', () => {
).toEqual('1234');
});
it('converts values (little-endian)', () => {
expect(
u8aToBn(
new Uint8Array([0x12, 0x34]),
true
).toString(16)
).toEqual('3412');
});
it('converts empty', () => {
expect(
u8aToBn(