AS3的BASE64编码与解码类

最近任务紧,工作忙,好久没来更新我的BLOG了。

今天在国外网站上淘到一个很好用的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" );    

       
}    

   
}    

}  

 

 

下载类文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python中的base64库进行图片的编码解码。 以下是一个示例代码,可以将一张图片进行base64编码,并将编码后的结果进行解码并保存为新的图片文件: ``` import base64 # 将图片编码base64格式 with open("image.png", "rb") as image_file: encoded_string = base64.b64encode(image_file.read()).decode('utf-8') # 将base64编码的字符串解码为图片并保存 with open("decoded_image.png", "wb") as output_file: output_file.write(base64.b64decode(encoded_string)) ``` 在上述代码中,首先使用`open()`函数打开要编码的图片文件,然后使用`base64.b64encode()`函数将图片内容编码base64格式。编码后的字符串需要使用`decode()`函数转换为普通的字符串,以便后续处理。 接下来,在第二个代码块中,我们将编码后的字符串解码为原始的图片内容,并使用`open()`函数将其保存为新的图片文件。在这里,我们使用`wb`模式打开输出文件,以便正确地写入二进制数据。 如果要进行base64解码而不是编码,则可以使用`base64.b64decode()`函数对编码后的字符串进行解码。例如: ``` import base64 # 从 base64 编码的字符串中解码出图片内容 with open("base64_encoded_image.txt", "r") as encoded_file: encoded_string = encoded_file.read() decoded_image = base64.b64decode(encoded_string) # 将解码后的图片内容保存为文件 with open("decoded_image.png", "wb") as output_file: output_file.write(decoded_image) ``` 在上述代码中,我们首先打开包含base64编码字符串的文件,并使用`read()`函数读取编码后的字符串。然后,我们使用`base64.b64decode()`函数将字符串解码为原始的二进制数据,并将其保存到`decoded_image`变量中。最后,我们使用`open()`函数将解码后的二进制数据写入到新的图片文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值