uniapp APP读取bin文件(仅测试安卓可用)

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(" ");
 },
相关推荐
云起SAAS8 分钟前
小智笔记APP源码 | 8大广告联盟聚合(穿山甲/优量汇/快手/百度) | 应用市场过审极速版 | uni-app全栈商用项目
笔记·uni-app·广告联盟·笔记app
im_AMBER28 分钟前
Leetcode 160 最小覆盖子串 | 串联所有单词的子串
开发语言·javascript·数据结构·算法·leetcode
得想办法娶到那个女人28 分钟前
项目中 TypeScript 类型推导 极简实战总结
前端·javascript·typescript
Beginner x_u33 分钟前
前端八股整理(Vue 02)|组件通信、生命周期、v-if 与 v-show
前端·javascript·vue.js
Fate_I_C1 小时前
Android DataBinding数据绑定表达式、双向绑定
android·kotlin·databinding
zs宝来了1 小时前
React 18 并发模式:Fiber 架构与时间切片
前端·javascript·框架
csj501 小时前
安卓基础之《(29)—消息机制与异步任务》
android
天若有情6731 小时前
反向封神!C++ 全局单例不避反用,实现无锁多线程函数独占访问
java·javascript·c++
张风捷特烈1 小时前
状态管理大乱斗#02 | Bloc 源码全面评析
android·前端·flutter
untE EADO2 小时前
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
android·sql·mysql