1.解析bin文件内容
javascript
getData(path) {
return new Promise(
(resolve) => {
uni.downloadFile({
url: path, // .bin 文件 URL
success: (res) => {
if (res.statusCode === 200) {
//文件读写是一个异步请求 用promise包起来方便使用时的async+await
plus.io.resolveLocalFileSystemURL(
res.tempFilePath, //请求文件系统
(fileEntry) => {
fileEntry.file(function (file) {
let fileReader = new plus.io.FileReader(); //new一个可以用来读取文件的对象fileReader
fileReader.readAsDataURL(file); //读文件的格式
fileReader.onerror = (e) => {
//读文件失败
console.log("获取文件失败", fileReader.error);
return;
};
fileReader.onload = (e) => {
//读文件成功
var u8arr = (function (path, name) {
var arr = path.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
resolve(u8arr);
})(e.target.result, fileEntry.name);
};
});
},
(error) => {
console.log("新建获取文件失败", error);
return;
}
);
}
},
fail: (err) => {
console.log("下载失败:", err);
},
});
},
(failure) => {
console.log("请求文件系统失败", failure.message);
return;
}
);
},
2.使用
javascript
let pathUrl = '你的在线.bin文件地址'
this.getData(pathUrl).then((res) => {
// arrayBuffer 文件
console.log(res);
// 转16进制
let hex = this.arraybufferTo2Hex(res);
console.log(hex);
});
// 转16进制
arraybufferTo2Hex(buffer) {
return Array.prototype.map
.call(new Uint8Array(buffer), (x) => ("00" + x.toString(16)).slice(-2))
.join(" ");
},