2014-07-26 3 views
0

누군가가 나를 도와 줄 수 있기를 바랍니다. 지금 여기서 며칠 동안 고생하고 있습니다.as3 ByteArray를 16 진수로 변환 (이진수 표현)

AS3 UDP 데이터 그램 소켓을 통해 이진 16 진수 표현 형식으로 UDP 패킷을 수신하고 있습니다 (RAW UDP 데이터라고 생각 됨).

내가 원래의 16 진수 형식으로 다시 변환해야하는 ByteArray 형식의 as3 패킷을 수신합니다. 이 플래시에서 내 출력 (이 같은 간격을 필요로하지 않으며, 선이 그것의 제거처럼 보인다보고에서, 그냥 같은 구조를 파괴

EF BE AD DE 
22 5C 88 06 
5E 00 00 00 
7C 11 FB 44 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
02 02 01 05 
91 EE FE F4 
04 00 00 00 
00 00 01 00 
11 00 00 00 

입니다 :

는 보는 방법이다 ? 제로는 내가 그것)이 일을 왜 아무 생각이 :

진수 = 여기

efbeaddea05b9515e0007d11fb440000000000000000221595ee76f54000001011000 내 AS3 기능입니다 :

public function hex(data:ByteArray){ 
    var hex:String = ""; 
    data.position = 0; 
    var len:uint = data.length; 
    for (var i:uint = 0; i < len; ++i){ 
     var byte:uint = data.readUnsignedByte(); 
     hex += byte.toString(16).substr(-2); 
    } 
    trace("hex= "+hex); 
} 

모든 도움을 주시면 대단히 감사하겠습니다.

답변

1

나는 해결책을 찾은 것처럼 보입니다! 나는 파기를 조금했고 허울한 유틸리티 클래스 인 Hex에서이 기능을 보았습니다.이 트릭을 수행하는 것 같습니다!

링크 클래스에 .. 추가 조사 후 다시보고합니다 https://code.google.com/p/as3crypto/source/browse/trunk/as3crypto/src/com/hurlant/util/Hex.as?r=4

내가 위의 변경에 필요한 모든이를했다 클래스 가져온 후 :

: 여기

trace("hex= "+Hex.fromArray(event.data); 

하면 실제 함수의

public static function fromArray(array:ByteArray, colons:Boolean=false):String { 
     var s:String = ""; 
     for (var i:uint=0;i<array.length;i++) { 
       s+=("0"+array[i].toString(16)).substr(-2,2); 
       if (colons) { 
         if (i<array.length-1) s+=":"; 
       } 
     } 
     return s; 
} 

원본 UDP 패킷 (모든 패딩이 제거 된 상태) :

,
EFBEADDE275A89005E000000FA1DFB440000000000000000000000000000000002020105891B0E3A040000000000010011000000 

AS3는이 ByteArray에서 진수로 변환 후, UDP 패킷을 수신 :

EFBEADDE655AF9025E000000FA1DFB4400000000000000000000000000000000020201058B1B4A3A040000000000010011000000 

(이 정확한 시간에 포착 된 동일한 패킷되지 않으므로이 약간 다를 것이다).