選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

dataTool.js 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. function strToHexCharCode(str) {
  2. if (str === "") return "";
  3. var hexCharCode = [];
  4. for (var i = 0; i < str.length; i++) {
  5. hexCharCode.push(str.charCodeAt(i).toString(16))
  6. }
  7. return hexCharCode.join("").toUpperCase()
  8. }
  9. function bccCheck(data) {
  10. var bcc = "";
  11. for (var a = 0; a < data.length / 2; a++) {
  12. bcc ^= parseInt(data.substring(2 * a, 2 * a + 2), 16)
  13. }
  14. if (bcc.length == 1) {
  15. bcc = "0" + bcc
  16. }
  17. return tenToHex(bcc, 2).toUpperCase()
  18. }
  19. function tenToHex(num, len, boo) {
  20. var hex = num.toString(16);
  21. var zero = "";
  22. for (var a = 0; a < len - hex.length; a++) {
  23. zero += "0"
  24. }
  25. var ret = "";
  26. if (boo) {
  27. if (hex.length % 2 == 0) {} else {
  28. hex = "0" + hex;
  29. zero = zero.substring(1)
  30. }
  31. ret = hex + zero
  32. } else if (!boo) {
  33. ret = zero + hex
  34. }
  35. return ret.toUpperCase()
  36. }
  37. function hexToString(str) {
  38. var trimedStr = str.trim();
  39. var rawStr = trimedStr.substr(0, 2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr;
  40. var len = rawStr.length;
  41. if (len % 2 !== 0) {
  42. alert("Illegal Format ASCII Code!");
  43. return ""
  44. }
  45. var curCharCode;
  46. var resultStr = [];
  47. for (var i = 0; i < len; i = i + 2) {
  48. curCharCode = parseInt(rawStr.substr(i, 2), 16);
  49. resultStr.push(String.fromCharCode(curCharCode))
  50. }
  51. return resultStr.join("").toUpperCase()
  52. }
  53. function encodeUtf8(text) {
  54. const code = encodeURIComponent(text);
  55. const bytes = [];
  56. for (var i = 0; i < code.length; i++) {
  57. const c = code.charAt(i);
  58. if (c === "%") {
  59. const hex = code.charAt(i + 1) + code.charAt(i + 2);
  60. const hexVal = parseInt(hex, 16);
  61. bytes.push(hexVal);
  62. i += 2
  63. } else bytes.push(c.charCodeAt(0))
  64. }
  65. return bytes
  66. }
  67. function hexToTen(sixteen) {
  68. var ten = parseInt(sixteen, 16);
  69. return ten
  70. }
  71. function str2utf8(str) {
  72. var code;
  73. var utf = "";
  74. for (var i = 0; i < str.length; i++) {
  75. code = str.charCodeAt(i);
  76. if (code < 128) {
  77. utf += str.charAt(i)
  78. } else if (code < 2048) {
  79. utf += String.fromCharCode(192 | code >> 6 & 31);
  80. utf += String.fromCharCode(128 | code >> 0 & 63)
  81. } else if (code < 65536) {
  82. utf += String.fromCharCode(224 | code >> 12 & 15);
  83. utf += String.fromCharCode(128 | code >> 6 & 63);
  84. utf += String.fromCharCode(128 | code >> 0 & 63)
  85. } else {
  86. throw "不是UCS-2字符集"
  87. }
  88. }
  89. return utf
  90. }
  91. function hexTobin(str) {
  92. str = str.toUpperCase();
  93. let hex_array = [{
  94. key: 0,
  95. val: "0000"
  96. }, {
  97. key: 1,
  98. val: "0001"
  99. }, {
  100. key: 2,
  101. val: "0010"
  102. }, {
  103. key: 3,
  104. val: "0011"
  105. }, {
  106. key: 4,
  107. val: "0100"
  108. }, {
  109. key: 5,
  110. val: "0101"
  111. }, {
  112. key: 6,
  113. val: "0110"
  114. }, {
  115. key: 7,
  116. val: "0111"
  117. }, {
  118. key: 8,
  119. val: "1000"
  120. }, {
  121. key: 9,
  122. val: "1001"
  123. }, {
  124. key: "A",
  125. val: "1010"
  126. }, {
  127. key: "B",
  128. val: "1011"
  129. }, {
  130. key: "C",
  131. val: "1100"
  132. }, {
  133. key: "D",
  134. val: "1101"
  135. }, {
  136. key: "E",
  137. val: "1110"
  138. }, {
  139. key: "F",
  140. val: "1111"
  141. }];
  142. let value = "";
  143. for (let i = 0; i < str.length; i++) {
  144. for (let j = 0; j < hex_array.length; j++) {
  145. if (str.charAt(i) == hex_array[j].key) {
  146. value = value.concat(hex_array[j].val);
  147. break
  148. }
  149. }
  150. }
  151. return value
  152. }
  153. function binTohex(str) {
  154. let hex_array = [{
  155. key: 0,
  156. val: "0000"
  157. }, {
  158. key: 1,
  159. val: "0001"
  160. }, {
  161. key: 2,
  162. val: "0010"
  163. }, {
  164. key: 3,
  165. val: "0011"
  166. }, {
  167. key: 4,
  168. val: "0100"
  169. }, {
  170. key: 5,
  171. val: "0101"
  172. }, {
  173. key: 6,
  174. val: "0110"
  175. }, {
  176. key: 7,
  177. val: "0111"
  178. }, {
  179. key: 8,
  180. val: "1000"
  181. }, {
  182. key: 9,
  183. val: "1001"
  184. }, {
  185. key: "a",
  186. val: "1010"
  187. }, {
  188. key: "b",
  189. val: "1011"
  190. }, {
  191. key: "c",
  192. val: "1100"
  193. }, {
  194. key: "d",
  195. val: "1101"
  196. }, {
  197. key: "e",
  198. val: "1110"
  199. }, {
  200. key: "f",
  201. val: "1111"
  202. }];
  203. let value = "";
  204. let list = [];
  205. if (str.length % 4 !== 0) {
  206. let a = "0000";
  207. let b = a.substring(0, 4 - str.length % 4);
  208. str = b.concat(str)
  209. }
  210. while (str.length > 4) {
  211. list.push(str.substring(0, 4));
  212. str = str.substring(4)
  213. }
  214. list.push(str);
  215. for (let i = 0; i < list.length; i++) {
  216. for (let j = 0; j < hex_array.length; j++) {
  217. if (list[i] == hex_array[j].val) {
  218. value = value.concat(hex_array[j].key);
  219. break
  220. }
  221. }
  222. }
  223. return value
  224. }
  225. function strToBuffer(cmd) {
  226. let buffer = new ArrayBuffer(cmd.length / 2);
  227. let dataView = new Uint8Array(buffer);
  228. for (var a = 0; a < cmd.length / 2; a++) {
  229. dataView[a] = "0x" + cmd.substring(2 * a, 2 * a + 2)
  230. }
  231. return buffer
  232. }
  233. function bufferTohex(buffer) {
  234. var hexArr = Array.prototype.map.call(new Uint8Array(buffer), function(bit) {
  235. return ("00" + bit.toString(16)).slice(-2)
  236. });
  237. return hexArr.join("")
  238. }
  239. function isEmpty(data) {
  240. if (data.length == 0 || data == null || data == "undefined") {
  241. return true
  242. }
  243. return false
  244. }
  245. function formatTime(date) {
  246. var year = date.getFullYear();
  247. var month = date.getMonth() + 1;
  248. var day = date.getDate();
  249. var hour = date.getHours();
  250. var minute = date.getMinutes();
  251. var second = date.getSeconds();
  252. return [year, month, day].map(formatNumber).join("/") + " " + [hour, minute, second].map(formatNumber).join(":")
  253. }
  254. function formatNumber(n) {
  255. n = n.toString();
  256. return n[1] ? n : "0" + n
  257. }
  258. function formatTimeTwo(number, format) {
  259. var formateArr = ["Y", "M", "D", "h", "m", "s"];
  260. var returnArr = [];
  261. var date = new Date(number * 1e3);
  262. returnArr.push(date.getFullYear());
  263. returnArr.push(formatNumber(date.getMonth() + 1));
  264. returnArr.push(formatNumber(date.getDate()));
  265. returnArr.push(formatNumber(date.getHours()));
  266. returnArr.push(formatNumber(date.getMinutes()));
  267. returnArr.push(formatNumber(date.getSeconds()));
  268. for (var i in returnArr) {
  269. format = format.replace(formateArr[i], returnArr[i])
  270. }
  271. return format
  272. }
  273. module.exports = {
  274. encodeUtf8: encodeUtf8,
  275. tenToHex: tenToHex,
  276. hexToTen: hexToTen,
  277. bccCheck: bccCheck,
  278. hexToString: hexToString,
  279. strToHexCharCode: strToHexCharCode,
  280. str2utf8: str2utf8,
  281. hexTobin: hexTobin,
  282. binTohex: binTohex,
  283. isEmpty: isEmpty,
  284. strToBuffer: strToBuffer,
  285. bufferTohex: bufferTohex,
  286. formatTime: formatTime,
  287. formatTimeTwo: formatTimeTwo
  288. };