網上常見的方法是下面這種。
下面var one = arr[i].toString(2)是把byte值轉為二進制串,下面那個match匹配的是什么意思呢。如果我的byte值為1001 0100
這里面的v =one.match(/^1+?(?=0)/)出來的結果又是啥。各位知道的麻煩幫忙看下哈。十分感謝~~~~
function byteToString(arr) {
if(typeof arr === 'string') {
return arr;
}
var str = '',
_arr = arr;
for(var i = 0; i < _arr.length; i++) {
var one = _arr[i].toString(2),
v = one.match(/^1+?(?=0)/);
if(v && one.length == 8) {
var bytesLength = v[0].length;
var store = _arr[i].toString(2).slice(7 - bytesLength);
for(var st = 1; st < bytesLength; st++) {
store += _arr[st + i].toString(2).slice(2);
}
str += String.fromCharCode(parseInt(store, 2));
i += bytesLength - 1;
} else {
str += String.fromCharCode(_arr[i]);
}
}
return str;
}
uj5u.com熱心網友回復:
match(regexp)。用正則去匹配字串,匹配成功回傳一個陣列,否則回傳null/^1+?(?=0)/貪婪匹配至少一個1開頭的,正向匹配后綴帶0(至少要有1個0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/38952.html
標籤:JavaScript
