mjs_buffer.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. export function buf2hex(buffer) { // buffer is an ArrayBuffer
  2. return [...new Uint8Array(buffer)]
  3. .map(x => x.toString(16).padStart(2, '0'))
  4. .join('');
  5. }
  6. export function hex2ab(hex){
  7. let typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
  8. return parseInt(h, 16)
  9. }))
  10. let buffer = typedArray.buffer
  11. return buffer
  12. }
  13. /**
  14. * 十进制转十六进制
  15. * @param {number} dec 要转换的十进制数
  16. * @returns 转换后的十六进制字符串,如果是奇数位,前面补0
  17. */
  18. export function dec2hex(dec)
  19. {
  20. let res = dec.toString(16);
  21. // 如果是奇数位,前面补0
  22. if (res.length % 2) {res = '0' + res;}
  23. return res;
  24. }
  25. // 十六进制字符串分割为数组
  26. export function hexStr2Arr(hexStr){
  27. let arr = [];
  28. for(let i=0;i<hexStr.length;i+=2){
  29. arr.push(hexStr.substr(i,2))
  30. }
  31. return arr;
  32. }
  33. // 任意数字转字符串
  34. export function num2str(num){
  35. return num.toString();
  36. }
  37. function hexStrToBuffer(str){
  38. // 填充首位
  39. if(str.length % 2){str=`0${str}`}
  40. for(let i=0;i<str.length;i+=2){
  41. hex2ab(str.substr(i,2))
  42. }
  43. }
  44. export default {
  45. buf2hex,
  46. hex2ab,
  47. dec2hex,
  48. hexStr2Arr
  49. }