tronewb
Version:
JavaScript SDK that encapsulates the TRON HTTP API
60 lines (45 loc) • 1.65 kB
text/typescript
import { hexStr2byteArray } from './code.js';
import { ADDRESS_PREFIX } from './address.js';
import { getBase58CheckAddress, decodeBase58Address } from './crypto.js';
import { byteArray2hexStr } from './bytes.js';
export function hexStringToBase58(sHexString: string) {
if (sHexString.length < 2 || (sHexString.length & 1) != 0) return '';
const bytes = hexStr2byteArray(sHexString);
return getBase58CheckAddress(bytes);
}
export function base58ToHexString(sBase58: string) {
const bytes = decodeBase58Address(sBase58);
if (!bytes) return '';
return byteArray2hexStr(bytes);
}
export function hexStringToUtf8(hex: string) {
const arr = hex.split('');
let out = '';
for (let i = 0; i < arr.length / 2; i++) {
const tmp = `0x${arr[i * 2]}${arr[i * 2 + 1]}`;
const charValue = String.fromCharCode(parseInt(tmp));
out += charValue;
}
return out;
}
export function stringUtf8tHex(str: string) {
let val = '';
for (let i = 0; i < str.length; i++) {
if (val == '') val = str.charCodeAt(i).toString(16);
else val += str.charCodeAt(i).toString(16);
}
return val;
}
export function address2HexString(sHexAddress: string) {
if (sHexAddress.length == 42 && sHexAddress.indexOf(ADDRESS_PREFIX) == 0) return sHexAddress;
return base58ToHexString(sHexAddress);
}
export function hexString2Address(sAddress: string) {
return hexStringToBase58(sAddress);
}
export function hexString2Utf8(sHexString: string) {
return hexStringToUtf8(sHexString);
}
export function stringUtf8toHex(sUtf8: string) {
return stringUtf8tHex(sUtf8);
}