tweetcast/client/lib/websocket-js/flash-src/third-party/com/hurlant/util/Hex.as
author Raphael Velt <raph.velt@gmail.com>
Mon, 10 Oct 2011 15:24:28 +0200
changeset 310 526d3e411736
parent 306 70c9688a1486
permissions -rwxr-xr-x
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
305
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     1
/**
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     2
 * Hex
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     3
 * 
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     4
 * Utility class to convert Hex strings to ByteArray or String types.
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     5
 * Copyright (c) 2007 Henri Torgemane
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     6
 * 
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     7
 * See LICENSE.txt for full license information.
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     8
 */
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     9
package com.hurlant.util
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    10
{
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    11
	import flash.utils.ByteArray;
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    12
	
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    13
	public class Hex
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    14
	{
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    15
		/**
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    16
		 * Support straight hex, or colon-laced hex.
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    17
		 * (that means 23:03:0e:f0, but *NOT* 23:3:e:f0)
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    18
		 * Whitespace characters are ignored.
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    19
		 */
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    20
		public static function toArray(hex:String):ByteArray {
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    21
			hex = hex.replace(/\s|:/gm,'');
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    22
			var a:ByteArray = new ByteArray;
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    23
			if (hex.length&1==1) hex="0"+hex;
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    24
			for (var i:uint=0;i<hex.length;i+=2) {
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    25
				a[i/2] = parseInt(hex.substr(i,2),16);
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    26
			}
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    27
			return a;
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    28
		}
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    29
		
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    30
		public static function fromArray(array:ByteArray, colons:Boolean=false):String {
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    31
			var s:String = "";
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    32
			for (var i:uint=0;i<array.length;i++) {
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    33
				s+=("0"+array[i].toString(16)).substr(-2,2);
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    34
				if (colons) {
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    35
					if (i<array.length-1) s+=":";
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    36
				}
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    37
			}
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    38
			return s;
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    39
		}
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    40
		
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    41
		/**
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    42
		 * 
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    43
		 * @param hex
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    44
		 * @return a UTF-8 string decoded from hex
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    45
		 * 
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    46
		 */
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    47
		public static function toString(hex:String):String {
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    48
			var a:ByteArray = toArray(hex);
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    49
			return a.readUTFBytes(a.length);
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    50
		}
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    51
		
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    52
		
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    53
		/**
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    54
		 * 
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    55
		 * @param str
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    56
		 * @return a hex string encoded from the UTF-8 string str
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    57
		 * 
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    58
		 */
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    59
		public static function fromString(str:String, colons:Boolean=false):String {
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    60
			var a:ByteArray = new ByteArray;
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    61
			a.writeUTFBytes(str);
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    62
			return fromArray(a, colons);
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    63
		}
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    64
		
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    65
	}
436a31d11f1d Ajout du streaming des tweets par WebSocket
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    66
}