Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

fileData.js 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // import {
  2. // TextEncoder
  3. // } from "text-decoding";
  4. export function IntegerToHexString(num, nLen) {
  5. if (num == null) {
  6. let str = "";
  7. for (let i = 0; i < nLen; i++) {
  8. str += "0";
  9. }
  10. return str;
  11. }
  12. return HighAddZero(num.toString(16), nLen);
  13. }
  14. export function HighAddZero(str, nLen) {
  15. let length = str.length;
  16. let nAddLen = nLen - length;
  17. if (length > nLen) {
  18. str = str.substring(0, nLen);
  19. } else {
  20. for (let i = 0; i < nAddLen; i++) {
  21. str = "0" + str;
  22. }
  23. }
  24. return str;
  25. }
  26. export function AsciToHexString(strAsci, nLen) {
  27. let s = String(strAsci);
  28. let encoder = new TextEncoder("gbk");
  29. let bytes = encoder.encode(s);
  30. let strResult = HexToString(bytes);
  31. let strLen = strResult.length;
  32. if (strLen >= nLen) {
  33. strResult = strResult.substring(0, nLen);
  34. } else {
  35. let nAddLen = nLen - strLen;
  36. for (let i = 0; i < nAddLen; i++) {
  37. strResult += "0";
  38. }
  39. }
  40. return strResult;
  41. }
  42. const DIGITS_UPPER = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
  43. 'E', 'F'
  44. ];
  45. export function HexToString(inHex) {
  46. let i;
  47. let strResult = "";
  48. for (i = 0; i < inHex.length; i++) {
  49. strResult += DIGITS_UPPER[(0xF0 & inHex[i]) >>> 4];
  50. strResult += DIGITS_UPPER[inHex[i] & 0x0F];
  51. }
  52. return strResult;
  53. }
  54. /**
  55. * 十六进制转汉字
  56. *
  57. * @param {string} data
  58. * @returns {string}
  59. */
  60. export function HexToStrig(data) {
  61. let str = data.substring(data.length - 2);
  62. while (str === "00") {
  63. data = data.substring(0, data.length - 2);
  64. if (data.length === 0) {
  65. return "";
  66. }
  67. str = data.substring(data.length - 2);
  68. }
  69. const asd = hexStringToByteArray(data);
  70. try {
  71. str = new TextDecoder("gbk").decode(asd);
  72. } catch (e) {
  73. console.error(e);
  74. }
  75. return str;
  76. }
  77. /**
  78. * 十六进制字符串转字节数组
  79. *
  80. * @param {string} str
  81. * @returns {Uint8Array}
  82. */
  83. export function hexStringToByteArray(str) {
  84. if (!str) {
  85. return new Uint8Array();
  86. }
  87. const result = new Uint8Array(str.length / 2);
  88. for (let i = 0; i < str.length; i += 2) {
  89. result[i / 2] = parseInt(str.substr(i, 2), 16);
  90. }
  91. return result;
  92. }
  93. /**
  94. * 十六进制转十进制
  95. *
  96. * @param {string} data
  97. * @returns {string}
  98. */
  99. export function HexToInt(data) {
  100. let num = -1;
  101. try {
  102. num = parseInt(data, 16);
  103. } catch (e) {
  104. console.error(e);
  105. }
  106. return num.toString();
  107. }