hexUtil.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. module.exports = {
  2. string2ListInt: string2ListInt,
  3. int2Hex: int2Hex,
  4. buf2hex: buf2hex,
  5. buf2string: buf2string,
  6. changeArrayByValue: changeArrayByValue,
  7. removeWrongArray: removeWrongArray,
  8. }
  9. ///string转换List<int>
  10. function string2ListInt(str) {
  11. let utf8 = [];
  12. for (let i = 0; i < str.length; i++) {
  13. let charcode = str.charCodeAt(i);
  14. if (charcode < 0x80) {
  15. utf8.push(charcode);
  16. } else if (charcode < 0x800) {
  17. utf8.push(0xc0 | (charcode >> 6),
  18. 0x80 | (charcode & 0x3f));
  19. } else if (charcode < 0xd800 || charcode >= 0xe000) {
  20. utf8.push(0xe0 | (charcode >> 12),
  21. 0x80 | ((charcode >> 6) & 0x3f),
  22. 0x80 | (charcode & 0x3f));
  23. } else { // surrogate pair
  24. i++;
  25. charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));
  26. utf8.push(0xf0 | (charcode >> 18),
  27. 0x80 | ((charcode >> 12) & 0x3f),
  28. 0x80 | ((charcode >> 6) & 0x3f),
  29. 0x80 | (charcode & 0x3f));
  30. }
  31. }
  32. return utf8; // 在小程序中,这个数组可以替代 Uint8Array 使用
  33. }
  34. ///10进制转16进制
  35. function int2Hex(num) {
  36. // 将数字转换为16进制字符串
  37. let hexStr = num.toString(16);
  38. // 将16进制字符串转换回数字(这一步在微信小程序中通常不需要,除非有特殊需求)
  39. let i = parseInt(hexStr, 16);
  40. return i;
  41. }
  42. ///获取数据
  43. function buf2hex(buffer) {
  44. return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
  45. }
  46. ///数据转文字
  47. function buf2string(buffer) {
  48. var arr = Array.prototype.map.call(new Uint8Array(buffer), x => x)
  49. var str = ''
  50. for (var i = 0; i < arr.length; i++) {
  51. str += String.fromCharCode(arr[i])
  52. }
  53. return str
  54. }
  55. /// value 数组转换的根据值 array 需要转换的数组
  56. /// 根据数组中的一个值分隔数组, 分割后组成的新数组
  57. function changeArrayByValue(value, array) {
  58. // var value = "IMU data";
  59. var newArray = new Array();
  60. var dataStr = '';
  61. for (var i = 0; i < array.length; i++) {
  62. if (array[i] == value) {
  63. if (dataStr) {
  64. //把分隔的数据添加新到数组中
  65. newArray.push(dataStr.substring(0, dataStr.length - 2).split(" "));
  66. }
  67. dataStr = '';
  68. continue;
  69. } else {
  70. dataStr += (array[i] + " ");
  71. //把最后分隔的数据添加新到数组中
  72. if (i == array.length - 1) {
  73. newArray.push(dataStr.substring(0, dataStr.length - 2).split(" "));
  74. }
  75. }
  76. }
  77. return newArray;
  78. }
  79. ///数组 去除数组中长度不等于三的属性
  80. function removeWrongArray(array) {
  81. for (var i = 0; i < array.length; i++) {
  82. if (array[i].length != 9) {
  83. array.splice(i, 1);
  84. removeWrongArray(array);
  85. }
  86. }
  87. return array;
  88. }