Member 12851411 Ответов: 0

Строки PHP не принимает символы из расширенного набора ASCII в функции socket_recv


I have an application where I am receiving data using socket_recv. The data received varies from 07 to ff of hex which i am storing in string. the problem is i am getting data like 3f in hex when i should receive ff. which means the problem is with sign bit. below is the example code

if(socket_recv ( $sock , $str , 6 , MSG_DONTWAIT ) === FALSE)
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Could not receive data: [$errorcode] $errormsg \n");
}


Что я уже пробовал:

Я пробовал отображать полученные данные всеми способами, а также отображать десятичный,шестнадцатеричный эквивалент полученных данных. не уверен, правильно ли я получаю или показываю.

Jochen Arndt

Очистка знакового бита FF дает вам 7F, а не 3F. Сокеты всегда передают байты без изменения содержимого.

Таким образом, изменение происходит, вероятно, где-то еще на передающей или принимающей стороне.

Richard MacCutchan

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

0 Ответов