@pharosnames/address-encoder
Version:
Encodes and decodes address formats for various cryptocurrencies with Pharos network support
24 lines (22 loc) • 545 B
text/typescript
export const encodeLeb128 = (source: bigint): Uint8Array => {
const bytes: number[] = [];
do {
let byte = Number(source & 127n);
source >>= 7n;
if (source != 0n) {
byte = byte | 128;
}
bytes.push(byte);
} while (source != 0n);
return Uint8Array.from(bytes);
};
export const decodeLeb128 = (source: Uint8Array): bigint => {
let result = 0n;
let shift = 0n;
for (const byte of source) {
result |= BigInt(byte & 127) << shift;
if ((byte & 128) === 0) break;
shift += 7n;
}
return result;
};