home *** CD-ROM | disk | FTP | other *** search
- package mx.utils
- {
- import flash.utils.ByteArray;
-
- public class HexEncoder
- {
- public static const UPPER_CASE:String = "upper";
-
- public static const LOWER_CASE:String = "lower";
-
- public static var encodingStyle:String = UPPER_CASE;
-
- public static const MAX_BUFFER_SIZE:uint = 32767;
-
- private static const UPPER_CHAR_CODES:Array = [48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70];
-
- private static const LOWER_CHAR_CODES:Array = [48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102];
-
- private var _work:int = 0;
-
- private var _buffers:Array;
-
- public var encodingStyle:String;
-
- public function HexEncoder()
- {
- super();
- _buffers = [];
- _buffers.push([]);
- }
-
- public function flush() : String
- {
- return drain();
- }
-
- public function encode(param1:ByteArray, param2:uint = 0, param3:uint = 0) : void
- {
- if(param3 == 0)
- {
- param3 = param1.length;
- }
- if(param2 < param3)
- {
- param1.position = param2;
- }
- var _loc4_:String = this.encodingStyle != null ? this.encodingStyle : HexEncoder.encodingStyle;
- if(_loc4_ != UPPER_CASE && _loc4_ != LOWER_CASE)
- {
- _loc4_ = UPPER_CASE;
- }
- var _loc5_:Array = _loc4_ == UPPER_CASE ? UPPER_CHAR_CODES : LOWER_CHAR_CODES;
- while(param1.bytesAvailable > 0)
- {
- encodeBlock(param1.readByte(),_loc5_);
- }
- }
-
- private function encodeBlock(param1:int, param2:Array) : void
- {
- var _loc3_:Array = _buffers[_buffers.length - 1] as Array;
- if(_loc3_.length >= MAX_BUFFER_SIZE)
- {
- _loc3_ = [];
- _buffers.push(_loc3_);
- }
- _loc3_.push(param2[(param1 & 0xF0) >>> 4]);
- _loc3_.push(param2[param1 & 0x0F]);
- }
-
- public function drain() : String
- {
- var _loc3_:Array = null;
- var _loc1_:String = "";
- var _loc2_:uint = 0;
- while(_loc2_ < _buffers.length)
- {
- _loc3_ = _buffers[_loc2_] as Array;
- _loc1_ += String.fromCharCode.apply(null,_loc3_);
- _loc2_++;
- }
- _buffers = [];
- _buffers.push([]);
- return _loc1_;
- }
- }
- }
-
-