|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
ByteArray > compress toString > decompress ??? (или обратимость сжатия через строку)
каким образом это можно реализовать обратимость сжатия? я пробовал так:
Последний раз редактировалось neelts; 29.07.2007 в 18:37. |
|
|||||
Регистрация: Sep 2006
Сообщений: 256
|
|
|
|||||
lowka, этото понятно, а как через строку то?
скажем мне нужно отправить сжатую строку на сервер, и её же получить и расжать. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
А что, сервер выдает данные в бинарном виде, которые можно загрузить через URLLoader или URLStream и распаковать. А потом прочитывать UTF8.
|
|
|||||
да, это я видел в связке AS3 + AMFPHP
идем дальше: что если данные сжимаются на стороне сервера, скажем с помощью gzcompress ? результаты сжатия с ByteArray.compress почему то отличаются.. пример сжатия "hello world" flash: xÚcàÎHÍÉÉW(Ï/ÊI php: xÚËHÍÉÉW(Ï/ÊI ! не все символы отображаются существует ли решение этой проблемы? Последний раз редактировалось neelts; 29.07.2007 в 22:48. |
|
|||||
ыы, посравнивал тут коды символов сжатия, закономерность есть)
вообщем сжать в пхп и распаковать во флеше реально! ) поизучаю еще, если получится написать конвертер, сообщу немедленно |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Для начала надо перестать просматривать подобным образом контент.
|
|
|||||
я имел ввиду hex коды.
короче схожесть с увеличением строк куда то пропадает, возможно как то не так конвертирую символы. ведь аналог charCodeAt в php далеко не ord ? |
|
|||||
отлично, со схожестью почти разобрался, оказывается надо использовать writeMultiByte c подходящей кодировкой
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Опытным путем было установлено, что сжимать в php нужно с уровнем 9 и во Flash пропустить первые три байта полученного bytearray (позже выяснилось, что это не нужно, это просто три байта UTF-8 BOM затесались).
var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest('http://php/zlib/?test='+Math.random()); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.load(request); var completeHandler:Function = function(event:Event):void { var ba:ByteArray = event.target.data; var ab:ByteArray = new ByteArray(); ab.writeMultiByte('it is a good day to die','x-ansi'); ab.compress(); trace(ab,ab.length, ab[3].toString(16)); trace(ba,ba.length, ba[3].toString(16)); ba.uncompress(); trace(ba); } loader.addEventListener(Event.COMPLETE, completeHandler); Последний раз редактировалось etc; 30.07.2007 в 13:54. |
Часовой пояс GMT +4, время: 16:31. |
|
« Предыдущая тема | Следующая тема » |
|
|