когда использовать writeUTF () и writeUTFBytes () в ByteArray AS3 - PullRequest
7 голосов
/ 05 апреля 2011

Я пытаюсь создать формат файла для себя, поэтому я формировал заголовок для моего файла.Чтобы записать строку известной длины в ByteArray, какой метод я должен использовать, writeUTF () или writeUTFBytes ().

Из ссылки на язык Flex 3 говорится, что writeUTF () добавляет длину строки и выдает RangeError, тогда как writeUTFBytes () - нет.

Любые предложения приветствуются.

Ответы [ 2 ]

14 голосов
/ 05 апреля 2011

Единственное различие между ними состоит в том, что writeUTFBytes() не предшествует сообщению с длиной строки (Ошибка RangeError заключается в том, что 65535 - это наибольшее число, которое вы можете сохранить в 16 битах)

То, где вы будете использовать один над другим, зависит от того, что вы делаете. Например, я использую writeUTFBytes() при копировании объекта XML для сжатия. В этом случае мне не важна длина строки, и это добавит в код что-то дополнительное.

writeUTF() может быть полезно, если вы пишете потоковый / сетевой сервер, где, приписывая длину сообщения к сообщению, вы знаете, сколько байтов должно быть передано на другом конце до конца сообщения. например, у меня есть 200 байтов сообщения. Я прочитал длину (16-разрядное целое число), которая говорит мне, что сообщение составляет 100 байтов. Я читаю 100 байтов и знаю, что это полное сообщение. Все после - другое сообщение. Если бы длина сообщения говорила, что сообщение составляет 300 байтов, то я бы знал, что мне придется немного подождать, прежде чем я получу полное сообщение.

3 голосов
/ 05 апреля 2011

Я думаю, что нашел решение сам.Это пришло ко мне, когда я кодировал, чтобы прочитать данные.Соответствующие функции для чтения из байтового массива readUTF () и readUTFBytes (length: uint) требуют, чтобы ему была передана длина.

Так что если вы знаете длину строки, которую собираетесь написать, вы можетеиспользуйте writeUTFBytes () и readUTFBytes () с таким размером.В противном случае вы можете использовать readUTF (), позволяя as3 записывать размер данных, которые могут быть прочитаны без необходимости знать длину строки при использовании readUTF ().

Надеюсь, это может быть полезно для некоторыходин, а также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...