php字符串转数组等效于js的new Uint8Array(readAsArrayBuffer)

原创
04/17 16:31
阅读数 185
  • 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等,按 MDNphp.net 对照着写就行。 在js中,websocket拿到的是blob数据,在workerman中onMessage给过来的$message是字符串(等效于js的readAsText)

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部