php字符串转数组等效于js的newUint8Array(readAsArrayBuffer)
- php版本
$arr = str_split($LFVData);$decArr = [];
foreach ($arr as $value) {
$decArr[] = hexdec(bin2hex($value));
}
$arr = $decArr;
...
- js原版
// 放置解析好的 lfv数据let lfvResult = [];
// 创建文件的读取器
var reader = new FileReader();
// 开始读取blob数据 ==>LFVData
try {
reader.readAsArrayBuffer(LFVData);
} catch (error) {
let type = Object.prototype.toString.call(LFVData);
console.log("parseLFVData==>error");
console.log("result==>" + type)
console.log(error);
}
// 读取完成
reader.onload = function (evt) {
if (evt.target.readyState == FileReader.DONE) {
var readAsArrayBuffer = evt.target.result;
//Int8Array 1 8 位二补码有符号整数
//Uint8Array 1 8 位无符号整数
// var ret = "";
// 二进制数组
var arr = new Uint8Array(readAsArrayBuffer);
}
}
...
- 说明
最近找到个websocket接口的行情数据,用workerman连上后数据无法解析,然后找同事写了上面那段代码。
涉及进制转换的部分php都有相应的系统函数,如bindec、decbin、base_convert等,按 MDN 和 php.net 对照着写就行。
在js中,websocket拿到的是blob数据,在workerman中onMessage给过来的$message是字符串(等效于js的readAsText)
以上是 php字符串转数组等效于js的newUint8Array(readAsArrayBuffer) 的全部内容, 来源链接: utcz.com/z/515566.html