util.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. //const gbk = require('./gbk.js');
  2. //console.log("sasas" + gbk);
  3. const formatTime = date => {
  4. const year = date.getFullYear()
  5. const month = date.getMonth() + 1
  6. const day = date.getDate()
  7. const hour = date.getHours()
  8. const minute = date.getMinutes()
  9. const second = date.getSeconds()
  10. return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  11. }
  12. const formatNumber = n => {
  13. n = n.toString()
  14. return n[1] ? n : '0' + n
  15. }
  16. /*
  17. const hexStringToBuff = str => { //str='中国:WXHSH'
  18. const buffer = new ArrayBuffer((sumStrLength(str)) * 4)
  19. const dataView = new DataView(buffer)
  20. var data = str.toString();
  21. var p = 0; //ArrayBuffer 偏移量
  22. for (var i = 0; i < data.length; i++) {
  23. if (isCN(data[i])) { //是中文
  24. //调用GBK 转码
  25. var t = gbk.encode(data[i]);
  26. for (var j = 0; j < 2; j++) {
  27. //var code = t[j * 2] + t[j * 2 + 1];
  28. var code = t[j * 3 + 1] + t[j * 3 + 2];
  29. var temp = parseInt(code, 16)
  30. //var temp = strToHexCharCode(code);
  31. dataView.setUint8(p++, temp)
  32. }
  33. } else {
  34. var temp = data.charCodeAt(i);
  35. dataView.setUint8(p++, temp)
  36. }
  37. }
  38. return buffer;
  39. }
  40. */
  41. function toUnicode(s) {
  42. var str = "";
  43. for (var i = 0; i < s.length; i++) {
  44. str += "\\u" + s.charCodeAt(i).toString(16) + "\t";
  45. }
  46. return str;
  47. }
  48. function strToHexCharCode(str) {
  49. if (str === "")
  50. return "";
  51. var hexCharCode = [];
  52. hexCharCode.push("0x");
  53. for (var i = 0; i < str.length; i++) {
  54. hexCharCode.push((str.charCodeAt(i)).toString(16));
  55. }
  56. return hexCharCode.join("");
  57. }
  58. function sumStrLength(str) {
  59. var length = 0;
  60. var data = str.toString();
  61. for (var i = 0; i < data.length; i++) {
  62. if (isCN(data[i])) { //是中文
  63. length += 2;
  64. } else {
  65. length += 1;
  66. }
  67. }
  68. return length;
  69. }
  70. function isCN(str) {
  71. if (/^[\u3220-\uFA29]+$/.test(str)) {
  72. return true;
  73. } else {
  74. return false;
  75. }
  76. }
  77. //汉字转码
  78. function hexStringToArrayBuffer(str) {
  79. const buffer = new ArrayBuffer((str.length / 2) + 1)
  80. const dataView = new DataView(buffer)
  81. for (var i = 0; i < str.length / 2; i++) {
  82. var temp = parseInt(str[i * 2] + str[i * 2 + 1], 16)
  83. dataView.setUint8(i, temp)
  84. }
  85. dataView.setUint8((str.length / 2), 0x0a)
  86. return buffer;
  87. }
  88. //返回八位数组
  89. function subString(str) {
  90. var arr = [];
  91. if (str.length > 8) { //大于8
  92. for (var i = 0;
  93. (i * 8) < str.length; i++) {
  94. var temp = str.substring(i * 8, 8 * i + 8);
  95. arr.push(temp)
  96. }
  97. return arr;
  98. } else {
  99. return str
  100. }
  101. }
  102. //不带有汉字
  103. function hexStringToArrayBufferstr(str) {
  104. let val = ""
  105. for (let i = 0; i < str.length; i++) {
  106. if (val === '') {
  107. val = str.charCodeAt(i).toString(16)
  108. } else {
  109. val += ',' + str.charCodeAt(i).toString(16)
  110. }
  111. }
  112. val += "," + "0x0a";
  113. console.log(val)
  114. // 将16进制转化为ArrayBuffer
  115. return new Uint8Array(val.match(/[\da-f]{2}/gi).map(function(h) {
  116. return parseInt(h, 16)
  117. })).buffer
  118. }
  119. function ab2hex(buffer) {
  120. let hexArr = Array.prototype.map.call(
  121. new Uint8Array(buffer),
  122. function (bit) {
  123. return ('00' + bit.toString(16)).slice(-2)
  124. })
  125. return hexArr.join('');
  126. }
  127. // ArrayBuffer转为字符串,参数为ArrayBuffer对象
  128. function ab2str(buf) {
  129. return String.fromCharCode.apply(null, new Uint8Array(buf));
  130. }
  131. // 字符串转为ArrayBuffer对象,参数为字符串
  132. function str2ab(str) {
  133. var buf = new ArrayBuffer(str.length+1); // 补充/0
  134. var bufView = new Uint8Array(buf);
  135. for (var i = 0, strLen = str.length; i < strLen; i++) {
  136. bufView[i] = str.charCodeAt(i);
  137. }
  138. return buf;
  139. }
  140. function send0X0A() {
  141. const buffer = new ArrayBuffer(1)
  142. const dataView = new DataView(buffer)
  143. dataView.setUint8(0, 0x0a)
  144. return buffer;
  145. }
  146. function buf2hex(buffer) {
  147. return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
  148. }
  149. module.exports = {
  150. hexStringToArrayBuffer: hexStringToArrayBuffer,
  151. send0X0A: send0X0A,
  152. ab2hex: ab2hex,
  153. str2ab: str2ab,
  154. ab2str: ab2str,
  155. buf2hex: buf2hex
  156. }