Showing
1 changed file
with
13 additions
and
38 deletions
| 1 | //app.js | 1 | //app.js |
| 2 | // import log from 'utils/realTimeLog' | 2 | // import log from 'utils/realTimeLog' |
| 3 | 3 | ||
| 4 | -//ascii 返回长度 | ||
| 5 | -function ascLength(codeat){ | ||
| 6 | - let len=1 | ||
| 7 | - if(codeat>0x4000000){ | ||
| 8 | - len=6 | ||
| 9 | - }else if(codeat>0x200000){ | ||
| 10 | - len=5 | ||
| 11 | - }else if(codeat>65536){ | ||
| 12 | - len=4 | ||
| 13 | - }else if(codeat>2048){ | ||
| 14 | - len=3 | ||
| 15 | - }else{ | ||
| 16 | - len=2 | 4 | +function str2ab(str) { |
| 5 | + let strLen = str.length*2 | ||
| 6 | + var buf =new ArrayBuffer(strLen>5000?5000:strLen); | ||
| 7 | + var bufView =new Uint16Array(buf); | ||
| 8 | + for (var i = 0; i < buf.byteLength;i++) { | ||
| 9 | + let asc=str.charCodeAt(i) | ||
| 10 | + bufView[i] = asc; | ||
| 17 | } | 11 | } |
| 18 | - return len | 12 | + return buf; |
| 19 | } | 13 | } |
| 20 | -//简单计算字节长度 | ||
| 21 | -String.getBlength = function (str) { | ||
| 22 | - for (var i = str.length, n = 0; i--; ) { | ||
| 23 | - n += ascLength(str.charCodeAt(i)); | ||
| 24 | - } | ||
| 25 | - return n; | ||
| 26 | -} | ||
| 27 | -//按指定字节截取字符串 | ||
| 28 | -String.cutByte = function(str,len,endstr){ | ||
| 29 | - var len = +len | ||
| 30 | - ,endstr = typeof(endstr) == 'undefined' ? "..." : endstr.toString(); | ||
| 31 | - function n2(a){ var n = a / 2 | 0; return (n > 0 ? n : 1)} //用于二分法查找 | ||
| 32 | - if(!(str+"").length || !len || len<=0){return "";} | ||
| 33 | - if(this.getBlength(str) <= len){return str;} //整个函数中最耗时的一个判断,欢迎优化 | ||
| 34 | - var lenS = len - this.getBlength(endstr) | ||
| 35 | - ,_lenS = 0 | ||
| 36 | - , _strl = 0 | ||
| 37 | - while (_strl <= lenS){ | ||
| 38 | - var _lenS1 = n2(lenS -_strl) | ||
| 39 | - _strl += this.getBlength(str.substr(_lenS,_lenS1)) | ||
| 40 | - _lenS += _lenS1 | ||
| 41 | - } | ||
| 42 | - return str.substr(0,_lenS-1) + endstr | 14 | +function ab2str(buf) { |
| 15 | + return String.fromCharCode.apply(null,new Uint16Array(buf)); | ||
| 43 | } | 16 | } |
| 17 | + | ||
| 44 | if (wx.getRealtimeLogManager) { | 18 | if (wx.getRealtimeLogManager) { |
| 45 | const logger = wx.getRealtimeLogManager() | 19 | const logger = wx.getRealtimeLogManager() |
| 46 | let consoleLog=console.log | 20 | let consoleLog=console.log |
| @@ -53,7 +27,8 @@ if (wx.getRealtimeLogManager) { | @@ -53,7 +27,8 @@ if (wx.getRealtimeLogManager) { | ||
| 53 | if(!str) return; | 27 | if(!str) return; |
| 54 | params+=str | 28 | params+=str |
| 55 | }) | 29 | }) |
| 56 | - logger.info(String.cutByte(params,5000)); | 30 | + let bs=str2ab(params) |
| 31 | + logger.info(ab2str(bs).toString()); | ||
| 57 | success() | 32 | success() |
| 58 | }) | 33 | }) |
| 59 | } | 34 | } |
-
Please register or login to post a comment