URLLoader запрашивает формат данных для текста, но он получает двоичные проблемы? - PullRequest
0 голосов
/ 30 марта 2012

У меня есть URLLoader, который обычно запрашивает данные в текстовом формате, в любом случае при определенных условиях он может получить двоичный результат, который на самом деле представляет собой просто 1 целое число в двоичном формате.В любом случае разговор:

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

больше не проходит, поскольку данные результата находятся в текстовом формате из-за заголовка запроса ...

  • Как преобразовать данные результата в целое число?

Ответы [ 3 ]

3 голосов
/ 30 марта 2012

, если Вы уверены, что получили там int, введите:

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

То же самое вы можете сделать, если получите строку или XML.

Но если вы хотите получить данные как ByteArray, вы должны набрать перед загрузкой в ​​строке URLLoader:

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

чем ваши данные будут bytearray.

2 голосов
/ 30 марта 2012

Просто нужно поменять

urlLoader.dataFormat=URLLoaderDataFormat.BINARY

Но перед отправкой запроса.После этого бессмысленно это делать.

РЕДАКТИРОВАТЬ

Чтобы прочитать текст в двоичный файл (ByteArray)

var ba:ByteArray=new ByteArray();
ba.writeUTFBytes(( e.currentTarget as URLLoader ).data);
ba.position=0;
var myInteger:int=ba.readInt();
1 голос
/ 30 марта 2012
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
}

Базовое чтение и запись целого числа в байтовый массив

...