2012-03-30 15 views
0

Ich habe einen URLLoader, der normalerweise anfordert, dass die Daten im Textformat vorliegen. Unter bestimmten Bedingungen erhält er möglicherweise ein Binary als Ergebnis, das eigentlich nur eine ganze Zahl im Binärformat ist. Wie auch immer das Gespräch:URLLoader fordert das Datenformat als Text an, aber es wird ein Binär-Problem?

var ba : ByteArray = (e.currentTarget as URLLoader).data; // failing on this row. 
var r : int = ba.readInt(); 

tut vorbei mehr, da die Ergebnisdaten in Text forma auf Grund der Anfrage-Header ...

  • Wie die Ergebnisdaten in integer konvertieren?

Antwort

2

einfach, benötigen Sie

urlLoader.dataFormat=URLLoaderDataFormat.BINARY 

ändern Aber bevor Sie eine Anfrage senden. Danach macht es keinen Sinn. dies unterscheidet sich von meinem Fall |:

EDIT

Um Text in ein binäres (ByteArray)

var ba:ByteArray=new ByteArray(); 
ba.writeUTFBytes((e.currentTarget as URLLoader).data); 
ba.position=0; 
var myInteger:int=ba.readInt(); 
+0

das Problem, dass ich es nicht als BINARY Anfrage senden, aber TEXT, sowieso in sehr speziellen Fall wird der Server eine binäre Daten zurückgeben, und dann beginnt das Headbangen: | –

+0

Bearbeitung der Antwort, Check-in eine Minute –

+0

ja. Eigentlich habe ich diesen Weg schon ausprobiert, aber die Nummer, die rauskommt, ist nicht die, die wirklich vom Server gesendet wird.: | –

1
function test(){ 
    var bytes:ByteArray = new ByteArray(); 
    bytes.writeInt(0x00DDAA99); //create my byte array with int 14527129 
    bytes.position = 0;   //move the postion to the start 
    var newInt:int = bytes.readInt(); //read the bytes from starting position 
    trace("new num: "+newInt); //print out the number 
} 

Grund Lesen und Schreiben eine ganze Zahl auf Byte-Array

+0

zu lesen. Ich habe eine binäre Daten, die tatsächlich als Text falsch dargestellt wird. und ich muss es wieder in Binärdaten umwandeln und dann wahrscheinlich die Ganzzahl daraus lesen. –

3

, wenn Sie sicher sind, dass Sie int dort recive, Typ:

var value:int= int((e.currentTarget as URLLoader).data); 

Gleiche, was Sie tun können, wenn Sie Zeichenfolge erhalten oder XML.

Aber wenn Sie mögen Daten als ByteArray erhalten speichert, sollten Sie vor Lastart auf URLLoader Linie:

import flash.net.URLLoaderDataFormat; 
urlloader.dataFormat = URLLoaderDataFormat.BINARY; 

als Ihre Daten bytearray sein wird.

+0

Das DataFormat kann nach dem Empfang der Daten umgeschaltet werden? –