js 数据格式相互转换,ArrayBufer转字符串,字符串转ArrayBufer,ArrayBuffer转hex,hex转字符串

本文分享了在项目开发中遇到的乱七八糟数据处理,包括十六进制字符串转ArrayBuffer、ArrayBuffer转字符串、转hex以及hex数据转字符串的JavaScript函数,帮助开发者解决数据格式转换问题。
摘要由CSDN通过智能技术生成

开发过程中总是有些乱七八糟的数据,特别是对接设备的时候

今天就分享一下个人项目开发中使用到的数据转换方法

有需要的小伙伴自取

  • 十六进制字符串转换成ArrayBufer
    string2buffer (str) {
      return new Uint8Array(
        str.match(/[\da-f]{2}/gi).map(function (h) {
          return parseInt(h, 16);
        })
      ).buffer;
    },
  • ArrayBuffer转字符串
    buf2str (buffer) {
      let encodedString = String.fromCodePoint.apply(
        null,
        new Uint8Array(buffer)
      );
      let decodedString = decodeURIComponent(escape(encodedString));
      //没有这一步中文会乱码
      return decodedString;
    },
  • ArrayBuffer转hex
    ab2hex (buffer) {
      var hexArr = Array.prototype.map.call(
        new Uint8Array(buffer),
        function (bit) {
          return ("00" + bit.toString(16)).slice(-2);
        }
      );
      return hexArr.join(",");
    },
  • hex数据转字符串
    hexstr (str) {
      var _this = this;
      var arr = str.split("0d");
      var arr3 = [];
      var obj = {};
      var arr1 = [];
      var reg = new RegExp(",", "g");
      arr.forEach((element) => {
        arr3.push(_this.hex2str(element.replace(reg, "")));
      });
      arr3.forEach((element) => {
        for (let index = 0; index < element.length; index++) {
          if (element[index] == ":") {
            var namea = element.substring(0, index);
            var valueA = element.substring(index + 1, element.length);
            obj[namea] = valueA;
            arr1.push(obj);
          }
        }
      });
      uni.hideLoading();
      return arr1[0];
    },
    hex2str (str) {
      var len = str.length / 2;
      var result = "";
      for (var i = 0; i < len; i++) {
        let data = str.substring(i * 2, i * 2 + 2);
        result += String.fromCharCode(parseInt(data, 16));
      }
      return decodeURIComponent(escape(result));
    },
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值