【微信小程序】引入第三方库poke对GZIP压缩数据进行解压
-
使用 npm 包管理工具:
- 首先,在小程序的根目录下执行
npm init初始化项目,生成package.json文件。 - 然后,通过 npm 安装 pako:
npm install pako。 - 接下来,在小程序的根目录下创建一个名为
miniprogram_npm的文件夹。 - 将
node_modules/pako文件夹复制到miniprogram_npm文件夹中。 - 在需要使用 pako 的页面或组件中的 js 文件中使用
require()引入 pako:
const pako = require('pako'); - 首先,在小程序的根目录下执行
-
通过 CDN 引入:
- 打开
project.config.json文件,添加以下配置,指定需要引入的第三方库:
{"setting": {"urlCheck": true,"es6": true,"postcss": true,"minified": true,"newFeature": true},"packOptions": {"ignore": []},"compileType": "miniprogram","libVersion": "2.14.4","appid": "your appid","projectname": "your projectname","debugOptions": {"hidedInDevtools": []},"cdnUrl": {"default": "https://unpkg.com/"},"usingComponents": {} }- 在需要使用 pako 的页面或组件中的 js 文件中使用
import引入 pako:
import pako from 'pako'; - 打开
无论是使用 npm 包管理工具还是通过 CDN 引入,都需要在小程序开发工具中进行构建,以确保引入的第三方库可以被正确识别和使用。
请注意,微信小程序的环境和浏览器环境有差异,可能需要进行一些额外的适配工作,以确保 pako 库在小程序中正常运行。
例子
将字符串 "{\"data\":\"[31, -117, 8, 0, 0, 0, 0, 0, 0, 0, -115, -112, 57, 14, -61, 48, 12, 4, -1, -62, 90, 16, -42, 36, 69, 29, 95, 9, 92, -91, 73, -31, -46, 93, -32, -65, -121, -115, 3, 75, 70, 28, -9, -125, -63, -20, 62, -34, -12, -92, 54, 89, 69, 22, -51, 12, -28, 20, -24, 69, 77, 37, 74, -96, -123, 26, 34, 2, -83, -44, -72, -60, -76, -123, -114, 46, -128, -44, -99, 78, 35, 109, 61, 93, -44, 105, -34, 105, -5, 67, 87, 0, 92, -18, -106, 84, 115, -73, -2, 44, -23, -23, 4, -17, -74, -17, 74, -67, 46, 73, -109, 119, 103, -69, -21, -10, 3, 15, -97, -100, -70, 117, -96, -19, -14, -63, -63, 45, 124, 124, -16, -28, -50, -37, -4, 1, 4, -126, -5, 117, -51, 1, 0, 0]\",\"total\":10}" 转换为对象
- 并将其中的
[]部分转换为字节数组(byte array),再使用 GZIP 算法进行解压缩,按照以下步骤进行操作:
- 首先,使用
JSON.parse()方法将字符串转换为对象:
const jsonString = "{\"data\":\"[31, -117, 8, 0, 0, 0, 0, 0, 0, 0, -115, -112, 57, 14, -61, 48, 12, 4, -1, -62, 90, 16, -42, 36, 69, 29, 95, 9, 92, -91, 73, -31, -46, 93, -32, -65, -121, -115, 3, 75, 70, 28, -9, -125, -63, -20, 62, -34, -12, -92, 54, 89, 69, 22, -51, 12, -28, 20, -24, 69, 77, 37, 74, -96, -123, 26, 34, 2, -83, -44, -72, -60, -76, -123, -114, 46, -128, -44, -99, 78, 35, 109, 61, 93, -44, 105, -34, 105, -5, 67, 87, 0, 92, -18, -106, 84, 115, -73, -2, 44, -23, -23, 4, -17, -74, -17, 74, -67, 46, 73, -109, 119, 103, -69, -21, -10, 3, 15, -97, -100, -70, 117, -96, -19, -14, -63, -63, 45, 124, 124, -16, -28, -50, -37, -4, 1, 4, -126, -5, 117, -51, 1, 0, 0]\",\"total\":10}";
const obj = JSON.parse(jsonString);
- 接下来,将
obj.data字段的值转换为数组:
const dataArray = JSON.parse(obj.data);
- 然后,创建一个
Uint8Array对象,将dataArray的值作为参数传递给它,以将数组转换为无符号 8 位整型数组:
const uint8Array = new Uint8Array(dataArray);
- 最后,使用
pako库(一个用于处理 GZIP 压缩和解压缩的 JavaScript 库)进行解压缩。你可以使用pako.inflate()方法解压缩uint8Array对象:
const inflatedArray = pako.inflate(uint8Array);
请确保在使用 pako 库之前,先在项目中引入该库。
上述步骤完成后,inflatedArray 将包含解压缩后的字节数组数据。
相关文章:
【微信小程序】引入第三方库poke对GZIP压缩数据进行解压
使用 npm 包管理工具: 首先,在小程序的根目录下执行 npm init 初始化项目,生成 package.json 文件。然后,通过 npm 安装 pako:npm install pako。接下来,在小程序的根目录下创建一个名为 miniprogram_npm 的…...
Pandas操作Excel
Pandas 是 Python 语言的一个扩展程序库,用于数据分析。 菜鸟教程:https://www.runoob.com/pandas/pandas-tutorial.html 读取Excel pd.read_excel(path,sheet_name,header) path:excel文件路径sheet_name:读取的sheet࿰…...
leetcode 712. Minimum ASCII Delete Sum for Two Strings(字符串删除字母的ASCII码之和)
两个字符串s1, s2, 删除其中的字母使s1和s2相等。 问删除字母的最小ASCII码之和是多少。 思路: DP 先考虑极端的情况,s1为空,那么要想达到s2和s1相等,就要把s2中的字母删完, ASCII码之和就是s2中所有字母的ASCII码之…...
Springboot -- 按照模板生成docx、pdf文件,docx转pdf格式
使用 poi-tl 根据模板生成 word 文件。 使用 xdocreport 将 docx 文件转换为 pdf 文件。 xdocreport 也支持根据模板导出 word ,但是 poi-tl 的功能更齐全,操作更简单,文档清晰。 poi-tl 、xdocreport 内部均依赖了 poi ,要注意两…...
UE5.1.1 创建C++项目失败
因一直使用Unity开发环境,安装Unreal后,并未详细配置过其开发环境,默认创建蓝图工程无异常,但创建UE C项目时总共遇到两个错误: 错误一 Running /Epic/UE/UE_5.1/Engine/Build/BatchFiles/Build.bat -projectfiles -…...
windows进行端口映射
windows进行端口映射 1. 查询端口映射情况 netsh interface portproxy show v4tov42. 查询某一个IP的所有端口映射情况 netsh interface portproxy show v4tov4 | find "[IP]" # 例: netsh interface portproxy show v4tov4 | find "192.168.1.1&quo…...
Python 异常处理
Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 异常处理: 本站Python教程会具体介绍。断言(Assertions):本站Python教程会具体介绍。 python标准异常 异常名称描述BaseException所有异常的…...
C++ 类的静态成员
在结构化程序设计中程序模块的基本单位是函数,因此模块间对内存中数据的共享是通过函数与和函数之间的数据共享来实现的,其中包括两个途径——参数传递和全局变量。 面向对象的程序设计方法兼顾数据的共享和保护,将数据与操作数据的函数封装…...
360T7路由器进行WiFi无线中继教程
360T7路由器进行WiFi中继教程 1. 概述2. 360T7路由器进行WiFi中继实现教程2.1 登录路由器管理界面2.2 选择上网方式2.3 搜索WiFi2.4 连接WiFi2.5 点击确认2.6 在主页面查看网络 1. 概述 中继路由系统由一组中继路由器组成,为不能交换路由信息的路由域提供中继路由。…...
主成分分析
主成分分析 相关概念方差协方差协方差矩阵特征值和特征向量 主成分分析数据降维主成分分析原理主成分分析过程sklearn库中的PCA主成分分析实现案例 相关概念 方差 方差是一个用来衡量一组数据离散程度的统计量,它是各样本与样本均值的差的平方和的平均值。方差越大…...
笙默考试管理系统-MyExamTest(26)
笙默考试管理系统-MyExamTest(26) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试管理系统-MyEx…...
重新理解 RocketMQ Commit Log 存储协议
最近突然感觉:很多软件、硬件在设计上是有 root reason 的,不是 by desgin 如此,而是解决了那时、那个场景的那个需求。一旦了解后,就会感觉在和设计者对话,了解他们的思路,学习他们的方法,思维…...
ES6基础知识十:你是怎么理解ES6中 Decorator 的?使用场景?
一、介绍 Decorator,即装饰器,从名字上很容易让我们联想到装饰者模式 简单来讲,装饰者模式就是一种在不改变原类和使用继承的情况下,动态地扩展对象功能的设计理论。 ES6中Decorator功能亦如此,其本质也不是什么高大…...
接口/Web自动化测试如何做?框架如何搭建封装?
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试怎么做…...
Linux怎么从网络上下载文件
wget命令用于从网络上下载文件 下载文件: wget [URL]使用wget命令加上要下载的文件的URL,可以将文件下载到当前目录。 指定保存的文件名: wget -O [保存的文件名] [URL]使用-O选项后跟保存的文件名,可以指定下载的文件保存的名称…...
Flutter携带JSON参数post请求
在Flutter中发送带有JSON参数的网络请求,你可以使用HTTP库(如http或dio)来实现。以下是使用http库发送网络请求并携带JSON参数的示例: import package:http/http.dart as http; import dart:convert;// 创建参数Map Map<Strin…...
【vue】vue-image-lazy图片懒加载使用与介绍【超详细+npm包源代码】
简介 当前插件是基于vue3,写的一个图片懒加载,文章最下方是npm包的源码,你可以自己拿去研究和修改,如有更好的想法可以留言,如果对你有帮助,可以点赞收藏和关注,谢谢。 后续会添加图片放大和切…...
MFC第二十四天 使用GDI对象画笔和画刷来开发控件(分页控件选择态的算法分析、使用CToolTipCtrl开发动静态提示)
文章目录 GDI对象画笔和画刷来开发控件梯形边框的按钮控件CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp 矩形边框的三态按钮控件 CToolTipCtrl开发动静态提示CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp: 实现文件 矩形边框的三态按钮控件 CToolTipCtrl开发动…...
【NLP-新工具】语音转文本与OpenAI的用途
一、说明 OpenAI最近2022发布了一个名为Whisper的新语音识别模型。与DALLE-2和GPT-3不同,Whisper是一个免费的开源模型。它的主要功能就是将语音翻译成文本。本文将介绍如何使用这个重要应用库。 二、 Whisper概念 2.1 Whisper是啥? Whisper 是一种自动…...
try-catch-finally的字节码原理
Java 中有一个非常重要的内容是 try-catch-finally 的执行顺序和返回值问题,其中 finally 一定会执行,但是为什么会这样? 下面看下 try-catch-finally 背后的实现原理 try-catch public class Test {public static void main(String[] args)…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
