123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- // import {
- // TextEncoder,
- // TextDecoder
- // } 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();
- }
|