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

回到顶部