`
cisumer
  • 浏览: 82126 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

Javascript base64编解码

 
阅读更多
var BASE64={
    
    enKey: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
    
    deKey: new Array(
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
        -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
        41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
    ),
    
    encode: function(src){
        //用一个数组来存放编码后的字符,效率比用字符串相加高很多。
        var str=new Array();
        var ch1, ch2, ch3;
        //src=escape(src);
        var pos=0;
       //每三个字符进行编码。
        while(pos+3<=src.length){
            ch1=src.charCodeAt(pos++);
            ch2=src.charCodeAt(pos++);
            ch3=src.charCodeAt(pos++);
            str.push(this.enKey.charAt(ch1>>2), this.enKey.charAt(((ch1<<4)+(ch2>>4))&0x3f));
            str.push(this.enKey.charAt(((ch2<<2)+(ch3>>6))&0x3f), this.enKey.charAt(ch3&0x3f));
        }
        //给剩下的字符进行编码。
        if(pos<src.length){
            ch1=src.charCodeAt(pos++);
            str.push(this.enKey.charAt(ch1>>2));
            if(pos<src.length){
                ch2=src.charCodeAt(pos);
                str.push(this.enKey.charAt(((ch1<<4)+(ch2>>4))&0x3f));
                str.push(this.enKey.charAt(ch2<<2&0x3f), '=');
            }else{
                str.push(this.enKey.charAt(ch1<<4&0x3f), '==');
            }
        }
       //组合各编码后的字符,连成一个字符串。
        return str.join('');
    },
    
    decode: function(src){
        //用一个数组来存放解码后的字符。
        var str=new Array();
        var ch1, ch2, ch3, ch4;
        var pos=0;
       //过滤非法字符,并去掉'='。
        src=src.replace(/[^A-Za-z0-9\+\/]/g, '');
        //decode the source string in partition of per four characters.
        while(pos+4<=src.length){
            ch1=this.deKey[src.charCodeAt(pos++)];
            ch2=this.deKey[src.charCodeAt(pos++)];
            ch3=this.deKey[src.charCodeAt(pos++)];
            ch4=this.deKey[src.charCodeAt(pos++)];
            str.push(String.fromCharCode(
                (ch1<<2&0xff)+(ch2>>4), (ch2<<4&0xff)+(ch3>>2), (ch3<<6&0xff)+ch4));
        }
        //给剩下的字符进行解码。
        if(pos+1<src.length){
            ch1=this.deKey[src.charCodeAt(pos++)];
            ch2=this.deKey[src.charCodeAt(pos++)];
            if(pos<src.length){
                ch3=this.deKey[src.charCodeAt(pos)];
                str.push(String.fromCharCode((ch1<<2&0xff)+(ch2>>4), (ch2<<4&0xff)+(ch3>>2)));
            }else{
                str.push(String.fromCharCode((ch1<<2&0xff)+(ch2>>4)));
            }
        }
       //组合各解码后的字符,连成一个字符串。
        //return unescape(str.join(''));
        return str.join('');
    }
};

//调用时使用escape和unescape函数对字符串转码即可支持中文(unicode)
var code = BASE64.encode('hellow world!');
alert(code+" "+BASE64.decode(code));
分享到:
评论

相关推荐

    Base64编解码Demo

    在这个"Base64编解码Demo"中,我们将探讨如何将MAC地址和IP地址进行特定的位转换,然后使用Base64进行编码和解码。 首先,让我们了解MAC(Media Access Control)地址和IP(Internet Protocol)地址。MAC地址是网络...

    javascript写的base64编解码工具,windows桌面小工具,双击运行 hta后缀文件

    JavaScript编写的Base64编解码工具是一款便捷的桌面应用程序,尤其适用于Windows用户。它以HTA(HTML应用程序)的形式存在,允许用户直接在本地环境中双击运行,无需安装任何额外软件。HTA是一种特殊类型的HTML文件...

    base64编码解码器

    此外,在CSS和JavaScript中也可以直接使用Base64编码的图片数据,提高页面加载速度。 总的来说,"base64编码解码器"是处理二进制数据的重要工具,无论是后端的C++实现还是前端的应用场景,Base64编码都在数据传输和...

    Base64编解码.rar

    总结来说,Base64编解码是将二进制数据转换为ASCII字符串的技术,方便在网络传输中使用。了解其原理和应用可以帮助我们在开发过程中更好地处理二进制数据的编码和解码需求。在实际项目中,根据具体场景选择合适的...

    BASE64编解码工具

    在这个名为"BASE64编解码工具"的应用中,你可以方便地对字节数组进行编码和解码操作。 1. **BASE64编码原理**: BASE64编码的基本思想是将每3个字节(24位)的数据拆分成4个6位的块。由于6位可以表示64种不同的值...

    jquerybase64.zip jquery的base64编解码库

    总的来说,"jquerybase64"库为前端开发者提供了一个方便的工具,使得在JavaScript和jQuery环境中进行Base64编解码变得简单而直观。通过这个库,开发者可以更高效地处理二进制数据,提高应用的功能性和用户体验。在...

    java和js相互base64编码解码

    在Java和JavaScript中,Base64编码和解码是两个重要的功能,用于处理这种编码格式。下面将详细阐述这两个编程语言中实现Base64编码和解码的方法。 首先,让我们关注Java。在Java 8及更高版本中,已经内置了`java....

    base64编码解码源码

    在实际开发中,大多数编程语言都有内置的库函数或模块来处理Base64编码和解码,比如Python的`base64`模块,Java的`java.util.Base64`类,JavaScript的`atob()`和`btoa()`方法等。这些内置函数通常比自定义实现更高效...

    Base64编解码

    这很可能是C++实现的Base64编解码库。Base64.cpp可能包含了Base64编码和解码的函数实现,如`encode`和`decode`,而Base64.h则可能定义了相关的类和函数接口。在实际编程中,你可以通过包含Base64.h文件,然后调用...

    JSON验证-BASE64编解码-MD5哈希小工具

    JSON验证-BASE64编解码-MD5哈希小工具是一种实用的计算机程序,它集成了多种数据处理功能,方便用户在日常工作中快速处理和验证相关数据。这个小工具的核心功能包括三个部分:JSON验证、BASE64编解码以及MD5哈希计算...

    支持中文和urlsafe编码的Base64编解码库

    虽然JavaScript中可以使用原生的btoa和atob函数进行Base64的编...但是不支持中文字符,并且不支持url-safe的Base64编解码。当编码后的结果要是通过get请求传输时(比如跨域提交时),结果中包含有'/'字符将导致出错。

    Delphi Base64编码,javascript解码汉字乱码解决方法演示程序(源代码)

    Delphi进行Base64编码后,如果使用javascript解码,会出现如下问题: 1. 汉字乱码 2. 空格变成 + 号 本资源演示Delphi代码,实现javascript能正确进行Base64解码,不出现上述2个问题。 解决思路:进行Base64前先...

    javascript base64编码解码函数

    javascript版本的 base64解码和编码函数。

    Base64 编码解码工具

    "Base64 编码解码工具"是一个应用程序,它提供了一个方便的界面来对数据进行Base64的编码和解码操作。尽管这个工具非常实用,但需要注意的是,根据描述,它并不支持对文件进行编码或解码。这意味着你可以输入纯文本...

    base64编解码工具

    这个"base64编解码工具"是专为此目的设计的,帮助用户轻松地对数据进行Base64编码和解码。它支持多种字符编码方式,包括ANSI、UTF-8和Unicode,这些编码方式在处理不同语言和字符集时显得尤为重要。 1. **Base64...

    base64图片解码

    例如,如果你需要在Web应用中动态加载图片,可以将图片预先Base64编码并在服务器端存储,然后在客户端通过JavaScript解码并显示。或者在邮件系统中,由于很多邮件服务器不支持二进制附件,Base64编码也可以帮助你...

    Base64 编码和解码

    在JavaScript中,Base64编码和解码是经常用到的功能,尤其是在处理图像、JSON数据或者进行跨平台通信时。 ### Base64编码原理 Base64编码的基本思想是将每3个字节(24位)的数据转换为4个6位的字符(共24位),然后...

    QT图片BAse64编码与解码

    QT图片Base64编码与解码是C++编程中一种常见的技术,特别是在处理网络传输或者存储图片数据时。Base64是一种将二进制数据转换为可打印ASCII字符的编码方式,它通过特定的算法将每3个字节的数据转换为4个ASCII字符,...

Global site tag (gtag.js) - Google Analytics