2015-07-16 3 views
0

У меня есть библиотека C#, которая практически начинает прослушивать на сервере tcpip, принимает буфер определенного размера.Php Byte Array Packet

Мне нужно отправить этот пакет в виде байтового массива из php через сокет в виде массива байтов или его эквивалента.

Пакет построен, например, byte [1] (флаг) - это число от 0 до 255, а байт [6] - byte [11] содержит число с плавающей точкой в ​​строке fromat, например: 005.70, которая принимает 6 байтов, представляющих каждый символ.

Мне удалось отправить флаг, но когда я пытаюсь отправить число с плавающей точкой, оно не конвертируется с другой стороны (C#).

Так что мой вопрос, как я могу отправить массив байтов в C#, используя php?

От C# части преобразования обрабатывается следующим образом:

float.Parse(System.Text.Encoding.Default.GetString(Data, 6, 6)); 
+0

Как работает 'float.Parse'? Есть ли исключение? – cubrr

+0

Если вы поставили точку останова, когда вы получаете данные, какова их ценность? – ntohl

+0

Я отправил ответ. Как кажется, если вы не избежите фактического значения, которое вам нужно, данные заполняются эквивалентным значением ascii (являющимся байтовым значением) – Combinu

ответ

0

Только после того, как я отправил вопрос я продиктовал свой ответ. Я не уверен на 100%, если это правильный путь, но ему удалось правильно преобразовать.

Вот ответ:

Я создал массив символов и спасся флаг (4), чтобы быть фактическим значением байта быть (4), но я не ускользнул денежную

$string = array (0=>"\0", 1=>"\4", 2=>"\0", 3=>"\0", 4=>"\0", 5=>"\0", 6=>"5", 7=>".", 8=>"7", 9=>"\0", 10=>"\0"); 

интегрировалась все вместе ни с чем, как клей:

$arrByte = implode("", $string); 

и пересылаются по раскрытой розеткой:

$success = @fwrite($this->socket, $arrByte);