string、ArrayBuffy相互转换

字符串转ArrayBuff:

			//字符串转ArrayBuff
			strToArrayBuffer(s) {
			  var i = s.length;
			  var n = 0;
			  var ba = new Array()
			  for (var j = 0; j < i;) {
			    var c = s.codePointAt(j);
			    if (c < 128) {
			      ba[n++] = c;
			      j++;
			    }
			    else if ((c > 127) && (c < 2048)) {
			      ba[n++] = (c >> 6) | 192;
			      ba[n++] = (c & 63) | 128;
			      j++;
			    }
			    else if ((c > 2047) && (c < 65536)) {
			      ba[n++] = (c >> 12) | 224;
			      ba[n++] = ((c >> 6) & 63) | 128;
			      ba[n++] = (c & 63) | 128;
			      j++;
			    }
			    else {
			      ba[n++] = (c >> 18) | 240;
			      ba[n++] = ((c >> 12) & 63) | 128;
			      ba[n++] = ((c >> 6) & 63) | 128;
			      ba[n++] = (c & 63) | 128;
			      j+=2;
			    }
			  }
			  return new Uint8Array(ba);
			}

ArrayBuff转字符串:

			Utf8ArrayToStr(array) {
			    var out, i, len, c;
			    var char2, char3;
			 
			    out = "";
			    len = array.length;
			    i = 0;
			    while(i < len) {
			    c = array[i++];
			    switch(c >> 4)
			    { 
			      case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
			        // 0xxxxxxx
			        out += String.fromCharCode(c);
			        break;
			      case 12: case 13:
			        // 110x xxxx   10xx xxxx
			        char2 = array[i++];
			        out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
			        break;
			      case 14:
			        // 1110 xxxx  10xx xxxx  10xx xxxx
			        char2 = array[i++];
			        char3 = array[i++];
			        out += String.fromCharCode(((c & 0x0F) << 12) |
			                       ((char2 & 0x3F) << 6) |
			                       ((char3 & 0x3F) << 0));
			        break;
			    }
			    }
			 
			    return out;
			}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值