·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3的base64类用法源代码

时间:2016-01-21 17:13酷播
[AS3]as3的base64类用法源代码,[AS3]as3的base64类用法源代码

 

   下面是人人开心和大家一起分享的简洁而强大的AS3的BASE64类,快来一起学习吧!

  调用代码:

  1. import com.dynamicflash.utils.Base64; 
  2.  
  3.  //编码和解码字符串 
  4.  
  5.  var source:String = "Hello, world"
  6.  
  7.  var encoded:String = Base64.encode(source); 
  8.  
  9.  trace(encoded); 
  10.  
  11.  var decoded:String = Base64.decode(encoded); 
  12.  
  13.  trace(decoded); 
  14.  
  15.  //编码和解码ByteArray 
  16.  
  17.  var obj:Object= {name:"Dynamic Flash",url:"http://dynamicflash.com"}; 
  18.  
  19.  var source:ByteArray = new ByteArray(); 
  20.  
  21.  source.writeObject(obj); 
  22.  
  23.  var encoded:String = Base64.encodeByteArray(source); 
  24.  
  25.  trace(encoded); 
  26.  
  27.  var decoded:ByteArray = Base64.decodeToByteArray(encoded); 
  28.  
  29.  obj = decoded.readObject(); 
  30.  
  31.  trace(obj.name + "(" + obj.url + ")"); 

 

  -----------------------------------------------------------------------------------------------------------------

  Base64类代码:

  

  1. package com.dynamicflash.util{ 
  2.  
  3.   import flash.utils.ByteArray; 
  4.  
  5.   public class Base64 { 
  6.  
  7.   private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  8.  
  9.   public static const version:String = "1.0.0"
  10.  
  11.   public static function encode(data:String):String { 
  12.  
  13.   // Convert string to ByteArray 
  14.  
  15.   var bytes:ByteArray = new ByteArray(); 
  16.  
  17.   bytes.writeUTFBytes(data); 
  18.  
  19.   // Return encoded ByteArray 
  20.  
  21.   return encodeByteArray(bytes); 
  22.  
  23.   } 
  24.  
  25.   public static function encodeByteArray(data:ByteArray):String { 
  26.  
  27.   // Initialise output 
  28.  
  29.   var output:String = ""
  30.  
  31.   //Create data and output buffers 
  32.  
  33.   var dataBuffer:Array; 
  34.  
  35.   var outputBuffer:Array = new Array(4); 
  36.  
  37.   // Rewind ByteArray 
  38.  
  39.   data.position = 0
  40.  
  41.   // while there are still bytes to be processed 
  42.  
  43.   while (data.bytesAvailable > 0) { 
  44.  
  45.   // Create new data buffer and populate next 3 bytes from data 
  46.  
  47.   dataBuffer = new Array(); 
  48.  
  49.   for (var i:uint = 0; i < 3 && data.bytesAvailable > 0; i++) { 
  50.  
  51.   dataBuffer[i] = data.readUnsignedByte(); 
  52.  
  53.   } 
  54.  
  55.   // Convert to data buffer Base64 character positions and 
  56.  
  57.   // store in output buffer 
  58.  
  59.   outputBuffer[0] = (dataBuffer[0] & 0xfc) >> 2; 
  60.  
  61.   outputBuffer[1] = ((dataBuffer[0] & 0x03) << 4) | ((dataBuffer[1]) >> 4); 
  62.  
  63.   outputBuffer[2] = ((dataBuffer[1] & 0x0f) << 2) | ((dataBuffer[2]) >> 6); 
  64.  
  65.   outputBuffer[3] = dataBuffer[2] & 0x3f; 
  66.  
  67.   // If data buffer was short (i.e not 3 characters) then set 
  68.  
  69.   // end character indexes in data buffer to index of '=' symbol. 
  70.  
  71.   // This is necessary because Base64 data is always a multiple of 
  72.  
  73.   // 4 bytes and is basses with '=' symbols. 
  74.  
  75.   for (var j:uint = dataBuffer.length; j < 3; j++) { 
  76.  
  77.   outputBuffer[j + 1] = 64; 
  78.  
  79.   } 
  80.  
  81.   // Loop through output buffer and add Base64 characters to 
  82.  
  83.   // encoded data string for each character. 
  84.  
  85.   for (var k:uint = 0; k < outputBuffer.length; k++) { 
  86.  
  87.   output += BASE64_CHARS.charAt(outputBuffer[k]); 
  88.  
  89.   } 
  90.  
  91.   } 
  92.  
  93.   // Return encoded data 
  94.  
  95.   return output; 
  96.  
  97.   } 
  98.  
  99.   public static function decode(data:String):String { 
  100.  
  101.   // Decode data to ByteArray 
  102.  
  103.   var bytes:ByteArray = decodeToByteArray(data); 
  104.  
  105.   // Convert to string and return 
  106.  
  107.   return bytes.readUTFBytes(bytes.length); 
  108.  
  109.   } 
  110.  
  111.   public static function decodeToByteArray(data:String):ByteArray { 
  112.  
  113.   // Initialise output ByteArray for decoded data 
  114.  
  115.   var output:ByteArray = new ByteArray(); 
  116.  
  117.   // Create data and output buffers 
  118.  
  119.   var dataBuffer:Array = new Array(4); 
  120.  
  121.   var outputBuffer:Array = new Array(3); 
  122.  
  123.   // While there are data bytes left to be processed 
  124.  
  125.   for (var i:uint = 0; i < data.length; i += 4) { 
  126.  
  127.   // Populate data buffer with position of Base64 characters for 
  128.  
  129.   // next 4 bytes from encoded data 
  130.  
  131.   for (var j:uint = 0; j < 4 && i + j < data.length; j++) { 
  132.  
  133.   dataBuffer[j] = BASE64_CHARS.indexOf(data.charAt(i + j)); 
  134.  
  135.   } 
  136.  
  137.   // Decode data buffer back into bytes 
  138.  
  139.   outputBuffer[0] = (dataBuffer[0] << 2) + ((dataBuffer[1] & 0x30) >> 4); 
  140.  
  141.   outputBuffer[1] = ((dataBuffer[1] & 0x0f) << 4) + ((dataBuffer[2] & 0x3c) >> 2); 
  142.  
  143.   outputBuffer[2] = ((dataBuffer[2] & 0x03) << 6) + dataBuffer[3]; 
  144.  
  145.   // Add all non-padded bytes in output buffer to decoded data 
  146.  
  147.   for (var k:uint = 0; k < outputBuffer.length; k++) { 
  148.  
  149.   if (dataBuffer[k+1] == 64) break; 
  150.  
  151.   output.writeByte(outputBuffer[k]); 
  152.  
  153.   } 
  154.  
  155.   } 
  156.  
  157.   // Rewind decoded data ByteArray 
  158.  
  159.   output.position = 0
  160.  
  161.   // Return decoded data 
  162.  
  163.   return output; 
  164.  
  165.   } 
  166.  
  167.   public function Base64() { 
  168.  
  169.   throw new Error("Base64 class is static container only"); 
  170.  
  171.   } 
  172.  
  173.   } 
  174.  
  175.   } 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器