weforward-protocol-currency
Version:
weforward协议
37 lines (35 loc) • 923 B
JavaScript
const digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
export default function(hexstr) {
let base64Array = [];
let cnt = 0;
let bitArr = 0;
let bitNum = 0;
let ascv;
for (let n = 0; n < hexstr.length; ++n) {
if (hexstr[n] >= 'A' && hexstr[n] <= 'Z') {
ascv = hexstr.charCodeAt(n) - 55;
} else if (hexstr[n] >= 'a' && hexstr[n] <= 'z') {
ascv = hexstr.charCodeAt(n) - 87;
} else {
ascv = hexstr.charCodeAt(n) - 48;
}
bitArr = (bitArr << 4) | ascv;
bitNum += 4;
if (bitNum >= 6) {
bitNum -= 6;
base64Array.push(digits[bitArr >>> bitNum]);
bitArr &= ~(-1 << bitNum);
}
}
if (bitNum > 0) {
bitArr <<= 6 - bitNum;
base64Array.push(digits[bitArr]);
}
let padding = base64Array.length % 4;
if (padding > 0) {
for (let n = 0; n < 4 - padding; ++n) {
base64Array.push('=');
}
}
return base64Array.join('');
}