`

基于flash AS3.0 的BASE64编码与解码类

 
阅读更多
代码

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//调用代码:

import com.dynamicflash.utils.Base64;      
  
//编码和解码字符串     
var source:String = "Hello, world";      
var encoded:String = Base64.encode(source);      
trace(encoded);      
     
var decoded:String = Base64.decode(encoded);      
trace(decoded);     
  
//编码和解码ByteArray     
var obj:Object= {name:"Dynamic Flash",url:"http://dynamicflash.com"};   
var source:ByteArray = new ByteArray();   
source.writeObject(obj);   
  
var encoded:String = Base64.encodeByteArray(source);   
trace(encoded);   
  
var decoded:ByteArray = Base64.decodeToByteArray(encoded);   
obj = decoded.readObject();   
trace(obj.name + "(" + obj.url + ")");  


//Base64类代码:


package com.dynamicflash.util{   
  
    import flash.utils.ByteArray;   
       
    public class Base64 {   
           
        private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";   
  
        public static const version:String = "1.0.0";   
  
        public static function encode(data:String):String {   
            // Convert string to ByteArray   
            var bytes:ByteArray = new ByteArray();   
            bytes.writeUTFBytes(data);   
               
            // Return encoded ByteArray   
            return encodeByteArray(bytes);   
        }   
           
        public static function encodeByteArray(data:ByteArray):String {   
            // Initialise output   
            var output:String = "";   
               
            // Create data and output buffers   
            var dataBuffer:Array;   
            var outputBuffer:Array = new Array(4);   
               
            // Rewind ByteArray   
            data.position = 0;   
               
            // while there are still bytes to be processed   
            while (data.bytesAvailable > 0) {   
                // Create new data buffer and populate next 3 bytes from data   
                dataBuffer = new Array();   
                for (var i:uint = 0; i < 3 && data.bytesAvailable > 0; i++) {   
                    dataBuffer[i] = data.readUnsignedByte();   
                }   
                   
                // Convert to data buffer Base64 character positions and    
                // store in output buffer   
                outputBuffer[0] = (dataBuffer[0] & 0xfc) >> 2;   
                outputBuffer[1] = ((dataBuffer[0] & 0x03) << 4) | ((dataBuffer[1]) >> 4);   
                outputBuffer[2] = ((dataBuffer[1] & 0x0f) << 2) | ((dataBuffer[2]) >> 6);   
                outputBuffer[3] = dataBuffer[2] & 0x3f;   
                   
                // If data buffer was short (i.e not 3 characters) then set   
                // end character indexes in data buffer to index of '=' symbol.   
                // This is necessary because Base64 data is always a multiple of   
                // 4 bytes and is basses with '=' symbols.   
                for (var j:uint = dataBuffer.length; j < 3; j++) {   
                    outputBuffer[j + 1] = 64;   
                }   
                   
                // Loop through output buffer and add Base64 characters to    
                // encoded data string for each character.   
                for (var k:uint = 0; k < outputBuffer.length; k++) {   
                    output += BASE64_CHARS.charAt(outputBuffer[k]);   
                }   
            }   
               
            // Return encoded data   
            return output;   
        }   
           
        public static function decode(data:String):String {   
            // Decode data to ByteArray   
            var bytes:ByteArray = decodeToByteArray(data);   
               
            // Convert to string and return   
            return bytes.readUTFBytes(bytes.length);   
        }   
           
        public static function decodeToByteArray(data:String):ByteArray {   
            // Initialise output ByteArray for decoded data   
            var output:ByteArray = new ByteArray();   
               
            // Create data and output buffers   
            var dataBuffer:Array = new Array(4);   
            var outputBuffer:Array = new Array(3);   
  
            // While there are data bytes left to be processed   
            for (var i:uint = 0; i < data.length; i += 4) {   
                // Populate data buffer with position of Base64 characters for   
                // next 4 bytes from encoded data   
                for (var j:uint = 0; j < 4 && i + j < data.length; j++) {   
                    dataBuffer[j] = BASE64_CHARS.indexOf(data.charAt(i + j));   
                }   
                   
                // Decode data buffer back into bytes   
                outputBuffer[0] = (dataBuffer[0] << 2) + ((dataBuffer[1] & 0x30) >> 4);   
                outputBuffer[1] = ((dataBuffer[1] & 0x0f) << 4) + ((dataBuffer[2] & 0x3c) >> 2);           
                outputBuffer[2] = ((dataBuffer[2] & 0x03) << 6) + dataBuffer[3];   
                   
                // Add all non-padded bytes in output buffer to decoded data   
                for (var k:uint = 0; k < outputBuffer.length; k++) {   
                    if (dataBuffer[k+1] == 64) break;   
                    output.writeByte(outputBuffer[k]);   
                }   
            }   
               
            // Rewind decoded data ByteArray   
            output.position = 0;   
               
            // Return decoded data   
            return output;   
        }   
           
        public function Base64() {   
            throw new Error("Base64 class is static container only");   
        }   
    }   
}

 

分享到:
评论

相关推荐

    base64 编码与解码 中文完美支持

    总的来说,Base64编码与解码技术在现代网络通信中扮演着重要角色,特别是在处理包含非ASCII字符集的数据时,如中文字符。这个"完美支持中文"的Base64工具通过高效和准确的实现,为开发者提供了一种可靠的解决方案,...

    java和js相互base64编码解码

    `调用.txt`文件可能是测试这两种编码解码方法的简单脚本,它会调用Java和JavaScript中的函数,并比较结果是否一致,确保在不同环境下的Base64编码和解码是兼容的。 总之,Java和JavaScript中Base64编码和解码的实现...

    AS3的BASE64编码与解码类

    今天在国外网站上淘到一个很好用的AS3的BASE64类 感觉写得简洁而强大。很好,赶快放上来。 调用代码: import com . dynamicflash . utils . Base64 ; //编码和解码字符串 var source : String = "Hello, world" ...

    QT图片BAse64编码与解码

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

    Base64编码解码工具成品+源码

    使用易语言编写Base64编码解码工具,意味着该程序的界面和逻辑都是基于中文,对于中文使用者来说,理解和修改源码会更加直观。 易语言源码文件"Base64编码解码.e"包含了实现Base64编码和解码功能的算法和用户界面...

    labview 图片缩放 base64编码base64解码

    在提供的压缩包文件“图片缩放编码解码”中,很可能包含了实现这些功能的LabVIEW程序或范例。你可以打开并研究这些文件,以学习具体的操作步骤和编程技巧。通过实践,你可以掌握如何在LabVIEW中有效地处理图片,以及...

    base64编码解码离线工具

    在这个"base64编码解码离线工具"中,用户可以方便地对数据进行Base64编码和解码,而无需依赖互联网连接。这对于在无网络环境下处理数据或者保护隐私非常有用。开发者已经优化了工具的功能,增加了对换行符的支持。在...

    Android图片的Base64编码与解码及解码Base64图片方法

    以下是关于Android图片的Base64编码与解码的详细讲解。 ### 一、Base64编码 Base64编码的主要目的是将非文本数据转换为ASCII字符串,以便在网络中通过文本协议(如HTTP)传输。在Android中,我们可以使用`Base64`...

    base64编码与解码C语言实现(带注释说明原理)

    base64编码与解码C语言实现(带注释说明原理) 其中包括:base64编码接口和base64解码接口

    Base64编码和解码的应用(前后端程序)

    在后端,我们可以使用Java的`java.util.Base64`类进行Base64编码和解码。以下是一个简单的Servlet示例,用于接收前端发送的Base64编码字符串并解码: ```java import javax.servlet.http.*; import java.io.*; ...

    Base64编码解码器

    标题中的"Base64编码解码器"是一款工具软件,它能够对数据进行Base64的编码和解码操作。这款软件提供了三种不同的编码方式:ansi、utf-8和unicode。其中, 1. ANSI(American National Standards Institute)编码,...

    Base64编码、解码类+VB源代码Base64ED

    Base64ED可能是一个基于VB编写的工具或库,专门用于执行Base64编码和解码操作。这个工具或库可能包括一些用户界面元素,如输入框让用户输入要编码或解码的字符串,以及按钮触发编码或解码过程。同时,它也可能包含了...

    Base64编码解码工具

    **提供的"Base64编码解码工具":** 这个压缩包中的"Base64"文件应该是一个工具程序,用户无需安装,解压后直接运行即可对Base64文本进行编码和解码操作。这样的工具对于开发者、网络管理员或者需要处理Base64数据的...

    Base64 编码和解码

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

    Base64编码和解码器

    Base64编码基于标准的64个可打印字符,包括大小写字母、数字以及"+"和"/",并用"\n"作为每76个字符后的换行符。在解码时,这些字符会按照Base64规则还原为原始的二进制数据。 在C#中,Base64编码和解码可以通过...

    Base64编码解码工具V1.5

    描述中提到的"Base64编码解码工具V1.5"是一款实用软件,能够帮助用户对Base64编码的数据进行解码。在使用过程中,用户只需选择"Base64"编码选项,软件就会自动处理输入的Base64字符串,将其还原为原始的二进制数据。...

    base64编码和解码c++代码

    1. 找到live555源码中与Base64相关的函数或类。 2. 理解其内部逻辑,包括数据处理流程和错误处理机制。 3. 将相关代码复制到新的C++项目中,根据你的需求进行修改,比如优化性能、简化接口或增加异常处理。 4. 测试...

    C#实现Base64编码与解码 邮件解码

    在C#中,我们可以利用System.Convert类提供的静态方法进行Base64的编码和解码操作。以下是相关的API: 1. **Base64编码**: - `Convert.ToBase64String(byte[])`:将字节数组转换为Base64字符串。例如,你可以先将...

    Java Base64编码和解码

    在Java 8及更高版本中,Java引入了`java.util.Base64`类,提供了方便的Base64编码和解码API。以下是一些关键的方法: 1. `encodeBytes(byte[] input)`:将字节数组进行Base64编码,返回一个包含编码结果的字符串。 ...

    base64-编码解码工具-python实现源码

    在提供的压缩包文件"base64"中,可能包含了更具体的Base64编码解码工具的实现,例如自定义类或扩展功能。这些源码可以作为学习和理解Base64编码工作原理的实例,也可以作为基础,帮助你开发更复杂的应用,如文件的...

Global site tag (gtag.js) - Google Analytics