AS3的BASE64编码与解码类
2009-07-23 20:14
253 查看
最近任务紧,工作忙,好久没来更新我的BLOG了。
今天在国外网站上淘到一个很好用的AS3的BASE64类
感觉写得简洁而强大。很好,赶快放上来。
调用代码:
-----------------------------------------------------------------------------------------------------------------
Base64类代码:
下载类文件
今天在国外网站上淘到一个很好用的AS3的BASE64类
感觉写得简洁而强大。很好,赶快放上来。
调用代码:
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编码与解码
- 使用GTMBase64编码解码字符串
- Base64编码与解码
- base64的编码和解码
- base64编码和解码----系统方法
- 利用openssl进行base64的编码与解码
- python中Base64编码和解码:TypeError: a bytes-like object is required, not 'str'
- 原创: Base64, Quoted-Printable 的解码与编码函数
- java-base64编码和解码
- PHP安全的URL字符串base64编码和解码
- BASE64编码解码快代码
- C#实现Base64编码与解码(二)
- nodejs base64 编码解码
- Base64对图片的编码和解码
- base64编码、解码的C语言实现
- Java如何进行Base64的编码(Encode)与解码(Decode)?
- Base64 编码解码算法(JS版)[备忘录]
- 使用window.btoa和window.atob来进行Base64编码和解码
- 转载:在 Java 中如何进行 BASE64 编码和解码
- Rust base64 编码解码 首个rust小作品【自用别吐我】