javascript base64编解码

/**
 * @author wsf Base64 encode / decode
 */
var Base64 = {

	// 私有属性
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

	// 公共方法
	encode : function(input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;

		input = Base64._utf8_encode(input);

		while (i < input.length) {

			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);

			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;

			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}

			output = output + this._keyStr.charAt(enc1)
					+ this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3)
					+ this._keyStr.charAt(enc4);

		}

		return output;
	},

	// 解码
	decode : function(input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = Base64._utf8_decode(output);

		return output;

	},

	// 私有方法UTF-8编码
	_utf8_encode : function(string) {
		string = string.replace(/\r\n/g, "\n");
		var utftext = "";

		for ( var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			} else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// UTF-8解码
	_utf8_decode : function(utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while (i < utftext.length) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if ((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i + 1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = utftext.charCodeAt(i + 1);
				c3 = utftext.charCodeAt(i + 2);
				string += String.fromCharCode(((c & 15) << 12)
						| ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}

 

JavaScript编写的Base64编解码工具:Windows桌面HTA文件 HTA(HTML Applications)是一种微软为Windows平台开发的专用技术,它允许用户将HTML、CSS和JavaScript结合在一个单独的.hta文件中,形成一个完整的可执行应用程序。这种技术从2001年推出,当时的目的是为了简化桌面应用程序的开发,特别是对于那些希望使用Web技术构建本地应用程序的开发者。HTA提供了一系列的浏览器引擎和对象模型,使得开发者可以轻松地构建具有图形用户界面的应用程序,并且能够访问Windows的一些底层功能,如文件系统、注册表、COM组件等。 阅读详情

相关推荐

深入理解JavaScript编解码器及其应用

编解码器(Codec),即编码器和解码器,是将数据压缩以减少其大小进行传输或存储,而后在需要使用时再还原原始数据的一套算法和协议。在IT领域,这通常指的是视频、音频文件或网络传输中所使用的编码技术。Base64编码是一种广泛应用于计算机系统中进行二进制数据编码的方法,它能够将任意的二进制数据编码为ASCII字符集中的字符序列。这种编码方式起源于早期的电子邮件系统,在传输非ASCII字符集(如二进制文件)时能避免因编码问题而造成的信息丢失或损坏。

weixin_42376614的博客 918

Java与Js之Base64编解码

Java Base64编解码: import java.io.UnsupportedEncodingException; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class Base64 { // 加密 public static String encode(String str...

影子的博客 2103

15. GD32E230定时器实战:基于TIMER5的1秒LED闪烁中断配置详解

本文详细讲解了如何在GD32E230微控制器上配置TIMER5定时器,实现精准的1秒LED闪烁中断。内容涵盖从时钟开启、参数计算、中断设置到服务函数编写的完整流程,重点解析了预分频值与周期值的配置方法,帮助开发者掌握硬件定时器的核心应用。

weixin_29092787的博客 135

JS实现UTF8编解码及Base64编解码

最近抽了点时间去了解了下Unicode,UTF-8,Base64之间的关系,以及它们之间 的一些转换规则,并且自己动手按照相应的编码规则实现了相应的编解码,虽然写的很生硬,没有网上一些大神写的那么简洁,编解码效率可能也不那么高,但是我还是决定把我自己的实现思路分享一下,希望可以为那些想了解具体编码规则及过程的网友有一定的帮助,另外也希望各位大神指点指点,看看如何实现编解码可以让代码更高效更简洁。

Kenny_cn的博客 5970

FPGA实现高效数字下变频:CORDIC与CIC滤波器的Verilog优化设计

本文深入探讨了FPGA实现高效数字下变频的技术方案,重点介绍了CORDIC算法与CIC滤波器的Verilog优化设计。通过详细的算法原理分析、FPGA实现技巧和实战经验分享,展示了如何利用CORDIC的旋转运算替代乘法操作,以及CIC滤波器在降采样中的高效性能。文章还提供了完整的系统集成方案和资源优化策略,为无线通信和雷达信号处理领域的工程师提供了实用参考。

redis7keeper的博客 724

【硬件开发】振铃

如果是开关管的振铃,那么桥臂的SW处产生的振铃会窜入驱动电路,造成的结果就是驱动电路和上桥臂下桥臂之间的SW节点都会有振铃现象。如果是驱动电路的振铃,那么MCU的输出引脚还是正常的PWM,但是到了MOS管两侧就变成带有振铃的PWM波形了。开关振铃产生的原因是MOS管上面的寄生电感当开关管打开时为了保持电流不变感应出的电压会对电源和地产生冲击。开关管的驱动线上的寄生电容和寄生电感导致的振铃为驱动电路振铃。开关管上的寄生电容和寄生电感导致的振铃为开关节点振铃。、电感等元件的存在,导致电路中的电压和。

weixin_62546664的博客 1829

【JavaScript和nodejs之间UI和后端的base64编解码兼容方案】

尝试了多种方式,似乎JavaScript的atob和btoa在node转不出来,或者过程太麻烦,这里整理了一套适合UI和后台的base64编解码代码,对各种符号、中英文等良好支持。以上实现了服务器端和UI的base64编解码兼容。

xkjscm的博客 495

计组实验4 控制冒险与分支预测

目录前言实验内容背景知识分支预测技术⭐阻塞周期计算方法不开启 BTB开启 BTBpart 1 矩阵乘法与优化未开启 BTB 的分析开启 BTB 的分析part 2 设计代码使 BTB 无效part 3 循环展开优化矩阵乘法未开启 BTB开启 BTB结束语结论 前言 上一篇博客:计组实验3 mips冒险之流水线冒险 摸了半个月了。。。咕咕咕 今天来写计组实验 4 这个实验非常简单,就是有点难。 这个实验比较容易算错,或者是被模拟器出人意料的结果搞的神神叨叨的,所以今天来记录并且详细分析该实验。 注:请务必阅

AKGWSB 's blog 5668

JavaScript 编解码 Base64 速度测评

文章中介绍了两种进行 Base64 编解码的思路,一种是利用现有的 atob 和 btoa 函数,另一种也是利用现有的 FileReader 和 Fetch API.

henry_23的博客 1325

audio框架学习-Audio_Flinger分析

文章目录一、代码位置二、audio服务启动2.1 main服务2.2 audioflinger添加到系统服务中2.3 audioflinger的对外接口 之前记录过audioTrack的笔记,这次继续参考audioFlinger相关的代码并做笔记; 参考文档:https://www.cnblogs.com/innost/archive/2011/01/15/1936425.html和https://blog.youkuaiyun.com/zyuanyun/article/details/60890534?spm=100

永不秃头的程序员的博客 2135

【论文翻译】YOLO26: KEY ARCHITECTURAL ENHANCEMENTS AND PERFORMANCE BENCHMARKING FOR REAL-TIME OBJECT DETEC

本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其在实时边缘目标检测领域的关键架构改进与性能基准测试结果。YOLO26于2025年9月发布,是YOLO系列中最新、最先进的模型,专为在边缘设备和低功耗设备上实现高效能、高精度和部署就绪性而设计。论文依次详细介绍了YOLO26的架构创新,包括移除分布焦点损失(DFL)、采用端到端无非极大值抑制(NMS)推理、集成渐进式损失(ProgLoss)和小目标感知标签分配(STAL),以及引入MuSGD优化器以实现稳定收敛。

Limiiiing的博客 1686

JavaScript 语言 Base64 编解码实现类

JavaScript 语言 Base64 编解码实现类 改了下标题名称,可链接至原文,实测使用与 iOS 间进行互调传参数,编、解码正常。 另外,JavaScript 还支持三种 URL 编码方式: 1、Escape 2、EncodeURI 3、EncodeURICompoent 三者的差别,仅在于所支持的编码替换的特殊字符的数量上,各有不同。 ...

weixin_34150830的博客 115

给跨代引用记一本账:Java GC 的分配路径、卡表写屏障与收集器版图快速回顾

本文把 Java GC 的零散名词串成一条推理链路:从 TLAB 指针碰撞分配、逃逸分析,到 Eden、Survivor 与晋升的四条路,重点拆解卡表与写屏障如何为老年代指向新生代的引用记账,及 Minor GC 如何只扫脏卡。基于 JDK 8 实测:分散写使 Young GC 停顿涨 10~15 倍,条件卡标记消除卡表伪共享,计数循环让 System.gc 等待 2.7 秒,Survivor 过小使晋升量增加约 400 倍。文末梳理 JDK 8 到 27 的收集器演进、选型路径与排查顺序。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 17万+

Weex 鸿蒙化实践:js-base64 纯 JS 编解码库在 WebSceneAPI 中的集成与使用指南

本文基于 [WebSceneAPI 模块](https://link.gitcode.com/i/3f6469821054fe27c6bea7711adac313) 内置的 js-base64 库(位于 `common/js-base64` 目录)展开,系统讲解这一纯 JavaScript Base64 编解码库的安装方式、多端导入方法、完整 API 用法与内部实现原理,并结合仓库源码揭示它在本项

gitblog_01050的博客 468

C# 从数秒到毫秒:MySQL+Redis百万数据优化实战全解析

在处理百万级数据时,传统单体数据库常面临查询效率低下、数据库负载过高和用户体验差等问题。为解决这些性能瓶颈,可以采用MySQL分库分表、Redis缓存和异步统计的组合策略。 数据库分片:通过水平分表和分库实现,将单表数据分散到多个物理表或数据库实例中,降低单点负载。 Redis缓存:利用Redis缓存高频数据,减少数据库查询压力,提升响应速度。 异步统计:通过消息队列(如RabbitMQ)解耦统计任务,后台处理非实时任务,避免阻塞主流程。 这些优化策略能够显著提升系统性能,确保在高并发和大数据量场景下的稳定

墨夶的博客 852

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VLQ:一款强大的Base64 VLQ编解码JavaScript库

VLQ:一款强大的Base64 VLQ编解码JavaScript库 1. 项目基础介绍及主要编程语言 VLQ是一个开源项目,它提供了Base64 VLQ(Variable-Length Quantity)编码和解码的功能。该项目的主要编程语言是JavaScript,适用于Node.js和浏览器环境,并且支持AMD模块系统。VLQ编码通常用于生成sourcemap,它可以将原始源码映射到生成的内容,...

gitblog_00970的博客 520

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

js编解码base64

在JavaScript中,可以使用内置的btoa()和atob()函数来进行Base64的编码和解码。

m0_72642319的博客 1981

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

用js编解码base64

编码规则Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0...

weixin_30546189的博客 551

js和ruby对图片的base64编解码

js和ruby对图片的base64编解码前端js将图片转化为base64编码ruby将base64编码解开还原成图片 前端js将图片转化为base64编码 把图片转成base64编码 getBase64(file) { return new Promise(function (resolve, reject) { let reader = new FileReader(); let imgResult = ""; reader.readAsDat

weixin_46446630的博客 387

JavaScript 实现 Base64 编解码

/** * webtoolkit.base64是一个第三方实现的 Base64 编码工具,完美的支持 unicode 编码的字符串 * Base64.encode('中文') --&amp;gt; 5Lit5paH * Base64.decode('5Lit5paH') --&amp;gt; 中文 */ var Base64 = { // private property _keyStr ...

WJJPro的博客 1659

JavaScript Base64编码解码的终极解决方案:js-base64全面指南

还在为JavaScript中Base64编码的兼容性问题而烦恼吗?当你需要在浏览器、Node.js或现代模块系统中处理Base64数据时,js-base64库提供了最完整的解决方案。这个纯JavaScript实现的Base64编解码器,解决了传统方法的诸多限制,让数据处理变得简单高效。 ## 为什么选择js-base64? 在Web开发中,Base64编码无处不在:从图片的Data URI到H

gitblog_00134的博客 742

js base64编解码

function Base64() { // private property var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // public method for encoding this.encode = func...

crazy_victor的博客 1971

Javascript base64编解码

[code="js"]var BASE64={ enKey: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', deKey: new Array( -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, ...

cisumer的博客 365
上一篇: webservice学习之客户端封装类
下一篇: 中国省,市,区 json数据
sfSam
博客等级 码龄16年 13粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值