Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата malev:
но все равно встречается мусор типа - 0x000x000x00 »
Это не мусор. "0x00" - это hex представление "знака или символа" Nul. Если например открыть это изображение (предварительно его сохранив из сайта, как *.png) в SciTE, то можно увидеть как этот символ отображается, типа NUL в чорном квадратике. Плохо то, что этот символ нельзя ни копировать, ни конвертировать, чтоб заменить в нашем случае 0x00 на Nul, ибо если просто заменить на 00, то ничего не совпадет, ибо 0 в hex отображении будет иметь значение 30, а нужно, чтобы в hex отображении было именно 00.Единственное что можно сделать в этом случае, это загрузить код этого рисунка, с помощью описанной функции _HTTPGetHeader($sHost), изменив код в соответствующем месте, на:
Код: Выделить весь код
 $sCurrentRecv = TCPRecv($iSocket, 1)
        If @error <> 0 Then ExitLoop
        If $sCurrentRecv <> "" Then 
            If  $sCurrentRecv ="0x00" Then  
                $sRecv &= "1_2_3_4_5" ; заменяем, чтоб можно было тогда найти в бинарном виде, именно это.
            Else
            $sRecv &= $sCurrentRecv
            EndIf
Потом сохраняем только код самого рисунка в некий файл. После чего открываем этот файл в бинарном режиме для чтения и дальше, например так:
Код: Выделить весь код
$BinnaryData=StringReplace ( $BinnaryData, "315F325F335F345F35", "00") ; заменяем "1_2_3_4_5", которое в бинарном виде выглядит как "315F325F335F345F35" на Nul
ищем и заменяем совпадения. После чего сохраняем, данные в файл (не забыв про то что файл для этого нужно открыть в бинарном режиме и для записи 16+2). Вот теперь рисунок должен бы был открыться, код вроде как совпадает, но если открыть этот "рисунок" в SciTe например, и включить - показывать Символы перевода строк, то можно увидеть что в некоторых местах по сравнению с оригиналом, нет совместимости в отображении этих самых символов, например отображается как CR, а в оригинале LF или CRLF и тому подобное. Поэтому я сделал вывод, что тут дело в том, что сам Autoit, что то "химичит" при получении кода через TCPRecv ...

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:41, 31-10-2009 | #3