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

JavaScript字符串转换成base64编码方法

// base64编码表
const base64EncodeChars = ref<string>("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
);/*** base64编码* @param {Object} str*/
const base64encode = (str: string) => {let result = "";// 循环遍历字符串,每次处理3个字符// 一个字符对应一个ASCII,一个ASCII对应8bit,总24bit,即3byte,一个base64为6bit// 因此3个输入字符为一组正好能转为4个base64字符 --> 3byte * 8 = 6bit * 4for (let i = 0; i < str.length; i += 3) {// 分别计算每个字符对应的base64编码值let char1 = str.charCodeAt(i) >> 2; // 取byte1前6位let char2 = ((str.charCodeAt(i) & 3) << 4) | (str.charCodeAt(i + 1) >> 4); // 取byte1后2位+byte2前4位let char3 =((str.charCodeAt(i + 1) & 15) << 2) | (str.charCodeAt(i + 2) >> 6); // 取byte2后4位+byte3前2位let char4 = str.charCodeAt(i + 2) & 63; // 取byte3的后6位// 判断是否需要填充(每次共处理3个输入字符,只需要判断是否存在第二与第三个字符)// 一个输入字符 8 bit,最起码会产生 2个 base64字符if (isNaN(str.charCodeAt(i + 1))) {char3 = char4 = 64; // 第二个字符不存在时,填充末尾2个 =} else if (isNaN(str.charCodeAt(i + 2))) {char4 = 64; // 第三个字符不存在时,填充末尾1个 =}result +=base64EncodeChars.value.charAt(char1) +base64EncodeChars.value.charAt(char2) +base64EncodeChars.value.charAt(char3) +base64EncodeChars.value.charAt(char4);}return result;
};

相关文章:

JavaScript字符串转换成base64编码方法

// base64编码表 const base64EncodeChars ref<string>("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/" );/*** base64编码* param {Object} str*/ const base64encode (str: string) > {let result "";// 循环遍历字符串…...

25.惰性队列

介绍 消费者由于各种原因而致使长时间不能消费消息造成堆积。比如有一百万条消息发送到mq中&#xff0c;消费者这时宕机了不能消费消息&#xff0c;造成了消息堆积。惰性队列就有必要了。 正常情况下&#xff0c;消息保存在内存中。消费者从内存中读取消息消费&#xff0c;速…...

ControlNet on Stable Diffusion

ControlNet on Stable Diffusion 笔记来源&#xff1a; 1.Adding Conditional Control to Text-to-Image Diffusion Models 2.How to Use OpenPose & ControlNet in Stable Diffusion 3.ControlNet与DreamBooth&#xff1a;生成模型的精细控制与主体保持 4.Introduction t…...

源码编译安装,及nginx服务控制、监控块

1.源码编译安装&#xff1a; [root17dns ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz 2.解压&#xff1a; [root17dns ~]# tar -zxvf nginx-1.27.0.tar.gz 3.安装gcc等工具 [root17dns ~]# yum -y install gcc gcc-c [root17dns ~]# yum -y install make lrzsz …...

在react中使用wangeditor富文本

官方文档 wangeditor5在线文档 依赖安装&#xff08;react框架&#xff09; yarn add wangeditor/editor # 或者 npm install wangeditor/editor --saveyarn add wangeditor/editor-for-react # 或者 npm install wangeditor/editor-for-react --save在React 中使用wangEditor …...

拉提查合创5步玩转git工具协作代码开发

1 工具使用场景 开发团队使用git版本管理工具&#xff0c;进行协作代码开发过程中&#xff0c;最常用的场景为&#xff1a; &#xff08;1&#xff09;拉取代码 将git远端仓库最新代码拉取到本地。 &#xff08;2&#xff09;提交代码 将本地新增修改的代码提交至git远端仓库中…...

React特点

React 是一个用于构建用户界面的 JavaScript 库&#xff0c;由 Facebook 开发并维护。React 的特点主要体现在以下几个方面&#xff1a; 声明式&#xff08;Declarative&#xff09;&#xff1a;React 使你能够以一种声明的方式来描述你的 UI&#xff0c;这使得代码更加容易理解…...

鸿蒙(HarmonyOS)自定义Dialog实现时间选择控件

一、操作环境 操作系统: Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0&#xff08;API 9&#xff09; 二、效果图 三、代码 SelectedDateDialog.ets文件/*** 时间选择*/ CustomDialog export struct SelectedDateDialog {State selectedDate:…...

学习008-02-04-08 Localize UI Elements(本地化UI元素)

Localize UI Elements&#xff08;本地化UI元素&#xff09; This lesson explains how to localize an XAF application. It describes how to translate UI elements into German and create a multi-language application. 本课介绍如何本地化XAF应用程序。它描述了如何将U…...

如何系统的学习C++和自动驾驶算法

给大家分享一下我的学习C和自动驾驶算法视频&#xff0c;收藏订阅都很高。打开下面的链接&#xff0c;就可以看到所有的合集了&#xff0c;订阅一下&#xff0c;下次就能找到了。 【C面试100问】第七十四问&#xff1a;STL中既然有了vector为什么还需要array STL中既然有了vec…...

typescript 定义类

/* js class 和 ts class 的区别 ---------------------------- | 语言 | js | ts | ---------------------------| | 公有 | 有 | jspublic | ---------------------------| | 私有 | 无 | private | ---------------------------| | 静态 | …...

认证授权概述和SpringSecurity安全框架快速入门

1. 认证授权的概述 1.1 什么是认证 进入移动互联网时代&#xff0c;大家每天都在刷手机&#xff0c;常用的软件有微信、支付宝、头条、抖音等 以微信为例说明认证的相关基本概念。在初次使用微信前需要注册成为微信用户&#xff0c;然后输入账号和密码即可登录微信&#xff0c…...

docker常用命令集锦

目录 一、查看版本信息 1.1 查看 Docker CLI 版本&#xff1a; 1.2 查看 Docker 详细版本信息&#xff1a; 1.3 查看 Docker 系统信息&#xff1a; 二、进入和退出容器 2.1 进入容器&#xff1a; 2.2 退出容器&#xff1a; 2.3 查看容器日志&#xff1a; 2.4 查看容器的…...

学习Java的日子 Day56 数据库连接池,Druid连接池

Day56 1.数据库连接池 理解&#xff1a;池就是容器&#xff0c;容器中存放了多个连接对象 使用原因&#xff1a; 1.优化创建和销毁连接的时间&#xff08;在项目启动时创建连接池&#xff0c;项目销毁时关闭连接池&#xff09; 2.提高连接对象的复用率 3.有效控制项目中连接的…...

如何实现PostgreSQL对某一张表的WAL日志进行记录

PostgreSQL 没有内置的 binlog&#xff08;binary log&#xff09;机制像 MySQL 那样。它使用 Write-Ahead Logging (WAL) 来记录数据库的变更。要将这些变更记录到某张表中&#xff0c;通常可以使用逻辑复制&#xff08;Logical Replication&#xff09;和触发器&#xff08;T…...

机器学习数学基础(2)--最大似然函数

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 在机器学习和统计学领域中&#xff0c;似然函数&#xff08;Likelihood Function&#xff09;是一个至关重要的概念。…...

详解 @RequestHeader 注解在 Spring Boot 中的使用

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…...

C# 表达式树的简介与说明

文章目录 1. 表达式树是什么&#xff1f;2. 表达式树的基本组成3. 构建表达式树的步骤4. 表达式树的使用场景5. 示例代码6. 总结 在 C# 编程中&#xff0c;表达式树&#xff08;Expression Tree&#xff09;是一个强大的概念&#xff0c;它允许我们以代码的形式表示运行时的代码…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第六十三章 输入子系统实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

[补题记录]Leetcode 15. 三数之和

传送门&#xff1a;三数之和 思路 为了去重&#xff0c;需要先排序。 排序之后&#xff0c;显然每一个 n u m s [ i ] nums[i] nums[i] 就可以作为三数之中的第一个数。 因此&#xff0c;对于每一个 i i i&#xff0c;第二、三个数只能在 [ i 1 , n ] [i 1, n] [i1,n]…...

极速净化Windows 11:Win11Debloat一键释放系统潜能

极速净化Windows 11&#xff1a;Win11Debloat一键释放系统潜能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and custo…...

在fnOS飞牛NAS上部署宝塔+NocoBase低(零)代码平台的方法

在fnOS飞牛NAS上部署宝塔NocoBase低&#xff08;零&#xff09;代码平台的方法 温馨提醒&#xff1a;本文全文免费&#xff0c;严禁盗用、二次收费行为&#xff01; 更新日志&#xff1a; 2026/03/29 首次发布 2026/05/22 1、新增通过systemd托管进程&#xff0c;实现重启后自…...

TaskbarX完整指南:Windows任务栏图标居中与动画特效实战教程

TaskbarX完整指南&#xff1a;Windows任务栏图标居中与动画特效实战教程 【免费下载链接】TaskbarX Center Windows taskbar icons with a variety of animations and options. 项目地址: https://gitcode.com/gh_mirrors/ta/TaskbarX TaskbarX是一款专为Windows 10/11设…...

保姆级教程:5分钟快速搭建你的DNC服务器,实现Fanuc/西门子数控程序远程传输与管理

数控机床程序远程管理实战&#xff1a;5分钟构建企业级DNC服务 在金属加工车间里&#xff0c;老师傅们弯腰在机床控制面板上手动输入程序的场景正逐渐成为历史。当车间里同时运行着发那科、西门子和三菱等不同品牌的数控设备时&#xff0c;如何高效管理这些设备的加工程序&…...

DownKyi:解锁B站8K超高清视频下载的5个核心优势

DownKyi&#xff1a;解锁B站8K超高清视频下载的5个核心优势 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;…...

基于RK3576开发板的人脸检测算法部署实战:从环境搭建到性能优化

1. 项目概述与核心价值最近在做一个嵌入式视觉项目&#xff0c;需要在一块性能与功耗平衡的板子上跑实时人脸检测。经过一番选型&#xff0c;最终锁定了瑞芯微的RK3576开发板。这板子集成了NPU&#xff0c;对于跑轻量级神经网络模型来说&#xff0c;性价比相当不错。人脸检测作…...

铁路局信息化综合管理平台总体设计方案

一、五层架构支撑全域智能化 平台以感知、网络、数据、平台、应用五层架构贯通铁路资源数字化链路&#xff0c;为铁路局打造横向到边、纵向到底的智能化管理底座。 应用层-业务功能模块–物资仓储、卧具跟踪、工具管理、档案管理等业务功能模块 平台层-微服务与技术中心–提…...

深度学习 标注 训练一体化解决方案 | 深度学习AI平台

标注 & 训练一体化解决方案 | 深度学习AI平台&#xff5c;自研【核心功能】1、训练任务&#xff1a;支持目标检测、语义分割、图像分类、旋转目标、实例分割五类任务 2、可视化训练 一键开启模型训练实时查看训练进度和效果过漏检数据自动保存实时查看模型在测试图像上的可…...

spring boot 11

一、分组校验&#xff08;Spring Validation&#xff09;1. 核心概念分组校验是 Spring Validation 提供的功能&#xff0c;用于在不同业务场景&#xff08;新增 / 更新&#xff09;下&#xff0c;对同一个实体类执行不同的校验规则&#xff0c;避免重复定义实体类。2. 分组校验…...

Meta 裁员约 8000 人:弥补 AI 巨额投资,削减人力成本

Meta 裁员&#xff1a;弥补 AI 投资缺口据报道&#xff0c;Meta 已通知数千名员工被裁员&#xff0c;此次裁员是为弥补其在人工智能方面的巨额投资。《商业内幕》分享的 Meta 管理层邮件显示&#xff0c;这是公司“持续努力提高运营效率、平衡其他投资的举措之一”。裁员规模与…...