当前位置: 首页 > news >正文

字符串转换为字节数组、16进制转换为base64、base64转换为字符串数组、base64转换为16进制(微信小程序)

1、字符串转换为字节数组

// 字符串转为字节数组
function stringToByteArray(str) {var array = new Uint8Array(str.length);for (var i = 0; i < str.length; i++) {array[i] = str.charCodeAt(i);}return array;
}

 

2、16进制转换为base64

// 16进制转换为base64
function HexToBase64(sha1) {var digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"var base64_rep = ""var ascvvar bit_arr = 0var bit_num = 0for (var n = 0; n < sha1.length; ++n) {if (sha1[n] >= 'A' && sha1[n] <= 'Z') {ascv = sha1.charCodeAt(n) - 55} else if (sha1[n] >= 'a' && sha1[n] <= 'z') {ascv = sha1.charCodeAt(n) - 87} else {ascv = sha1.charCodeAt(n) - 48}bit_arr = (bit_arr << 4) | ascvbit_num += 4if (bit_num >= 6) {bit_num -= 6base64_rep += digits[bit_arr >>> bit_num]bit_arr &= ~ (-1 << bit_num)}}if (bit_num > 0) {bit_arr <<= 6 - bit_numbase64_rep += digits[bit_arr]}var padding = base64_rep.length % 4if (padding > 0) {for (var n = 0; n < 4 - padding; ++n) {base64_rep += "="}}return base64_rep
}

 

3、base64转换为字符串数组

https://www.npmjs.com/package/base64-arraybuffer

const base64ToArrayBuffer = require('base64-arraybuffer')// base64转换为字符串数组
export function base64ToArrayBufferFn(base64) {return base64ToArrayBuffer.decode(base64)
}

 

4、base64转换为16进制(微信小程序)

// base64转为16进制
function base64ToHex(base64Str) {const binaryStr = weAtob(base64Str);// 创建一个Uint8Array来存储二进制数据const uint8Array = new Uint8Array(binaryStr.length);for (let i = 0; i < binaryStr.length; i++) {uint8Array[i] = binaryStr.charCodeAt(i);}// 使用toString方法将二进制数据转换为十六进制[字符串]let hexStr = ''for (let i = 0; i < uint8Array.length; i++) {const hex = uint8Array[i].toString(16).padStart(2, '0');hexStr += hex;}return hexStr;
}

5、base64转换为16进制(非小程序)

// base64转为16进制
function base64ToHex(base64Str) {const binaryStr = atob(base64Str);// 创建一个Uint8Array来存储二进制数据const uint8Array = new Uint8Array(binaryStr.length);for (let i = 0; i < binaryStr.length; i++) {uint8Array[i] = binaryStr.charCodeAt(i);}// 使用toString方法将二进制数据转换为十六进制[字符串]let hexStr = ''for (let i = 0; i < uint8Array.length; i++) {const hex = uint8Array[i].toString(16).padStart(2, '0');hexStr += hex;}return hexStr;
}

相关文章:

  • 个人投资伦敦银应该学会辨别的回撤形态
  • 洛谷P3214 [HNOI2011] 卡农
  • 力扣283. 移动零
  • 数组和指针的联系(C语言)
  • 区块链学习记录01
  • 深入解析 Web 开发中的强缓存与协商缓存机制
  • 【WEEK15】学习目标及总结【Spring Boot】【中文版】
  • java-StringBuilder
  • printf(“不喝酒就没得朋友可是只要偶一喝酒就喝倒一代朋友人生真的很矛盾“);
  • 大语言模型 (LLM) 窥探未来
  • 在vue项目中使用markdown-it回显markdown文本
  • 在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本
  • 全数仓体系建设规范V4.0
  • 中国出海企业“奔赴”俄罗斯蓝海 有哪些认知需要对齐? | TopOn变现干货
  • AI数字人本地算力直播怎么做?青否数字人教您快速搭建直播间!
  • ES6语法详解(一)
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java多态
  • jdbc就是这么简单
  • passportjs 源码分析
  • SSH 免密登录
  • sublime配置文件
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue的全局变量和全局拦截请求器
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 成为一名优秀的Developer的书单
  • 如何设计一个微型分布式架构?
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • raise 与 raise ... from 的区别
  • ​io --- 处理流的核心工具​
  • (WSI分类)WSI分类文献小综述 2024
  • (二)WCF的Binding模型
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)JAVA中的堆栈
  • (转)LINQ之路
  • **PHP分步表单提交思路(分页表单提交)
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • :O)修改linux硬件时间
  • @RequestMapping-占位符映射
  • [ 数据结构 - C++]红黑树RBTree
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [22]. 括号生成
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Angular] 笔记 21:@ViewChild
  • [BZOJ2850]巧克力王国
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [c#基础]DataTable的Select方法
  • [CTSC2014]企鹅QQ
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [Java基础] Java中List.remove报错UnsupportedOperationException