home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Darbas / kidoz_v1.air / kidoz.swf / scripts / mx / utils / HexEncoder.as < prev    next >
Encoding:
Text File  |  2009-05-06  |  2.5 KB  |  89 lines

  1. package mx.utils
  2. {
  3.    import flash.utils.ByteArray;
  4.    
  5.    public class HexEncoder
  6.    {
  7.       public static const UPPER_CASE:String = "upper";
  8.       
  9.       public static const LOWER_CASE:String = "lower";
  10.       
  11.       public static var encodingStyle:String = UPPER_CASE;
  12.       
  13.       public static const MAX_BUFFER_SIZE:uint = 32767;
  14.       
  15.       private static const UPPER_CHAR_CODES:Array = [48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70];
  16.       
  17.       private static const LOWER_CHAR_CODES:Array = [48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102];
  18.       
  19.       private var _work:int = 0;
  20.       
  21.       private var _buffers:Array;
  22.       
  23.       public var encodingStyle:String;
  24.       
  25.       public function HexEncoder()
  26.       {
  27.          super();
  28.          _buffers = [];
  29.          _buffers.push([]);
  30.       }
  31.       
  32.       public function flush() : String
  33.       {
  34.          return drain();
  35.       }
  36.       
  37.       public function encode(param1:ByteArray, param2:uint = 0, param3:uint = 0) : void
  38.       {
  39.          if(param3 == 0)
  40.          {
  41.             param3 = param1.length;
  42.          }
  43.          if(param2 < param3)
  44.          {
  45.             param1.position = param2;
  46.          }
  47.          var _loc4_:String = this.encodingStyle != null ? this.encodingStyle : HexEncoder.encodingStyle;
  48.          if(_loc4_ != UPPER_CASE && _loc4_ != LOWER_CASE)
  49.          {
  50.             _loc4_ = UPPER_CASE;
  51.          }
  52.          var _loc5_:Array = _loc4_ == UPPER_CASE ? UPPER_CHAR_CODES : LOWER_CHAR_CODES;
  53.          while(param1.bytesAvailable > 0)
  54.          {
  55.             encodeBlock(param1.readByte(),_loc5_);
  56.          }
  57.       }
  58.       
  59.       private function encodeBlock(param1:int, param2:Array) : void
  60.       {
  61.          var _loc3_:Array = _buffers[_buffers.length - 1] as Array;
  62.          if(_loc3_.length >= MAX_BUFFER_SIZE)
  63.          {
  64.             _loc3_ = [];
  65.             _buffers.push(_loc3_);
  66.          }
  67.          _loc3_.push(param2[(param1 & 0xF0) >>> 4]);
  68.          _loc3_.push(param2[param1 & 0x0F]);
  69.       }
  70.       
  71.       public function drain() : String
  72.       {
  73.          var _loc3_:Array = null;
  74.          var _loc1_:String = "";
  75.          var _loc2_:uint = 0;
  76.          while(_loc2_ < _buffers.length)
  77.          {
  78.             _loc3_ = _buffers[_loc2_] as Array;
  79.             _loc1_ += String.fromCharCode.apply(null,_loc3_);
  80.             _loc2_++;
  81.          }
  82.          _buffers = [];
  83.          _buffers.push([]);
  84.          return _loc1_;
  85.       }
  86.    }
  87. }
  88.  
  89.