You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

fileData.js 3.6KB

9 kuukautta sitten
2 vuotta sitten
9 kuukautta sitten
2 vuotta sitten
9 kuukautta sitten
9 kuukautta sitten
9 kuukautta sitten
9 kuukautta sitten
1 vuosi sitten
2 vuotta sitten
1 vuosi sitten
2 vuotta sitten
2 vuotta sitten
1 vuosi sitten
9 kuukautta sitten
9 kuukautta sitten
9 kuukautta sitten
9 kuukautta sitten
1 vuosi sitten
2 vuotta sitten
1 vuosi sitten
2 vuotta sitten
1 vuosi sitten
2 vuotta sitten
1 vuosi sitten
1 vuosi sitten
1 vuosi sitten
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. // import {
  2. // TextEncoder,
  3. // TextDecoder
  4. // } from "../node-model/text-decoding";
  5. import "./encoder.js"
  6. // #ifdef MP-WEIXIN
  7. console.log("global", global)
  8. // #endif
  9. // #ifdef MP-ALIPAY
  10. console.log("global", $global)
  11. // #endif
  12. export function IntegerToHexString(num, nLen) {
  13. if (num == null) {
  14. let str = "";
  15. for (let i = 0; i < nLen; i++) {
  16. str += "0";
  17. }
  18. return str;
  19. }
  20. return HighAddZero(num.toString(16), nLen);
  21. }
  22. export function HighAddZero(str, nLen) {
  23. let length = str.length;
  24. let nAddLen = nLen - length;
  25. if (length > nLen) {
  26. str = str.substring(0, nLen);
  27. } else {
  28. for (let i = 0; i < nAddLen; i++) {
  29. str = "0" + str;
  30. }
  31. }
  32. return str;
  33. }
  34. export function AsciToHexString(strAsci, nLen) {
  35. let s = String(strAsci);
  36. // #ifdef MP-WEIXIN
  37. let encoder = new global.TextEncoder("UTF-8");
  38. // #endif
  39. // #ifdef MP-ALIPAY
  40. let encoder = new $global.TextEncoder("UTF-8");
  41. // #endif
  42. // let encoder = new TextEncoder("UTF-8");
  43. // let encoder = new TextEncoder("gbk");
  44. // let bytes = encode(str, 'gbk');
  45. let bytes = encoder.encode(s);
  46. let strResult = HexToString(bytes);
  47. let strLen = strResult.length;
  48. if (strLen >= nLen) {
  49. strResult = strResult.substring(0, nLen);
  50. } else {
  51. let nAddLen = nLen - strLen;
  52. for (let i = 0; i < nAddLen; i++) {
  53. strResult += "0";
  54. }
  55. }
  56. return strResult;
  57. }
  58. const DIGITS_UPPER = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
  59. 'E', 'F'
  60. ];
  61. export function HexToString(inHex) {
  62. let i;
  63. let strResult = "";
  64. for (i = 0; i < inHex.length; i++) {
  65. strResult += DIGITS_UPPER[(0xF0 & inHex[i]) >>> 4];
  66. strResult += DIGITS_UPPER[inHex[i] & 0x0F];
  67. }
  68. return strResult;
  69. }
  70. /**
  71. * 十六进制转汉字
  72. *
  73. * @param {string} data
  74. * @returns {string}
  75. */
  76. export function HexToStrig(data, charType = 1) {
  77. let str = data.substring(data.length - 2);
  78. while (str === "00") {
  79. data = data.substring(0, data.length - 2);
  80. if (data.length === 0) {
  81. return "";
  82. }
  83. str = data.substring(data.length - 2);
  84. }
  85. const asd = hexStringToByteArray(data);
  86. try {
  87. // #ifdef MP-WEIXIN
  88. let str = new global.TextDecoder("GBK").decode(asd)
  89. // #endif
  90. // #ifdef MP-ALIPAY
  91. let str = new $global.TextDecoder("GBK").decode(asd)
  92. // #endif
  93. // str = new TextDecoder("GBK").decode(asd);
  94. } catch (e) {
  95. console.error(e);
  96. }
  97. return str;
  98. }
  99. /**
  100. * 十六进制字符串转字节数组
  101. *
  102. * @param {string} str
  103. * @returns {Uint8Array}
  104. */
  105. export function hexStringToByteArray(str) {
  106. if (!str) {
  107. return new Uint8Array();
  108. }
  109. const result = new Uint8Array(str.length / 2);
  110. for (let i = 0; i < str.length; i += 2) {
  111. result[i / 2] = parseInt(str.substr(i, 2), 16);
  112. }
  113. return result;
  114. }
  115. /**
  116. * 十六进制转十进制
  117. *
  118. * @param {string} data
  119. * @returns {string}
  120. */
  121. export function HexToInt(data) {
  122. let num = -1;
  123. try {
  124. num = parseInt(data, 16);
  125. } catch (e) {
  126. console.error(e);
  127. }
  128. return num.toString();
  129. }
  130. function guessEncoding(bytes) {
  131. // 检查字节序列是否以 BOM(字节顺序标记)开头
  132. if (bytes[0] === 0xEF && bytes[1] === 0xBB && bytes[2] === 0xBF) {
  133. return 'UTF-8';
  134. } else if (bytes[0] === 0xFE && bytes[1] === 0xFF) {
  135. return 'UTF-16BE';
  136. } else if (bytes[0] === 0xFF && bytes[1] === 0xFE) {
  137. return 'UTF-16LE';
  138. } else {
  139. // 统计每个字节的频率
  140. let freq = {};
  141. for (let i = 0; i < bytes.length; i++) {
  142. let b = bytes[i];
  143. freq[b] = freq[b] ? freq[b] + 1 : 1;
  144. }
  145. // 检查是否存在 GBK 的特定字节序列
  146. if (freq[0x81] && freq[0x81] > 0 && freq[0x40] && freq[0x40] > 0) {
  147. return 'GBK';
  148. }
  149. // 如果没有特定的 GBK 字节序列,则假设为 UTF-8
  150. return 'UTF-8';
  151. }
  152. }