// import { // TextEncoder // } from "text-decoding"; export function IntegerToHexString(num, nLen) { if (num == null) { let str = ""; for (let i = 0; i < nLen; i++) { str += "0"; } return str; } return HighAddZero(num.toString(16), nLen); } export function HighAddZero(str, nLen) { let length = str.length; let nAddLen = nLen - length; if (length > nLen) { str = str.substring(0, nLen); } else { for (let i = 0; i < nAddLen; i++) { str = "0" + str; } } return str; } export function AsciToHexString(strAsci, nLen) { let s = String(strAsci); let encoder = new TextEncoder("gbk"); let bytes = encoder.encode(s); let strResult = HexToString(bytes); let strLen = strResult.length; if (strLen >= nLen) { strResult = strResult.substring(0, nLen); } else { let nAddLen = nLen - strLen; for (let i = 0; i < nAddLen; i++) { strResult += "0"; } } return strResult; } const DIGITS_UPPER = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' ]; export function HexToString(inHex) { let i; let strResult = ""; for (i = 0; i < inHex.length; i++) { strResult += DIGITS_UPPER[(0xF0 & inHex[i]) >>> 4]; strResult += DIGITS_UPPER[inHex[i] & 0x0F]; } return strResult; } /** * 十六进制转汉字 * * @param {string} data * @returns {string} */ export function HexToStrig(data) { let str = data.substring(data.length - 2); while (str === "00") { data = data.substring(0, data.length - 2); if (data.length === 0) { return ""; } str = data.substring(data.length - 2); } const asd = hexStringToByteArray(data); try { str = new TextDecoder("gbk").decode(asd); } catch (e) { console.error(e); } return str; } /** * 十六进制字符串转字节数组 * * @param {string} str * @returns {Uint8Array} */ export function hexStringToByteArray(str) { if (!str) { return new Uint8Array(); } const result = new Uint8Array(str.length / 2); for (let i = 0; i < str.length; i += 2) { result[i / 2] = parseInt(str.substr(i, 2), 16); } return result; } /** * 十六进制转十进制 * * @param {string} data * @returns {string} */ export function HexToInt(data) { let num = -1; try { num = parseInt(data, 16); } catch (e) { console.error(e); } return num.toString(); }