Intereting Posts
Количество коротких сообщений WordPress, количество раз используемых в сообщении поиск в базе данных laravel с живыми результатами Переменные в скрипте shell_exec () Как получить размер ресурса изображения в байтах с PHP и GD? Неработающий отчет обновления PDO не работает Форсирование загрузки файлов в PHP – внутри рамки Joomla База данных в CSV (Готово) пытается сохранить файл в папку на сервере PHP nodeValue strips html tags – альтернатива innerHTML? значения доступа к кодовому значению из внешних файлов Apache – «Невозможно инициализировать модуль» из-за того, что API модуля и PHP не соответствуют после изменения конфигурации PHP Могу ли я запускать php-скрипт под разрешениями пользователя с помощью FastCGI и APACHE? Можно ли получить время UNIX с такой даты? 2011-02-27 02:04:46? Доля констант между PHP и JavaScript Защитите аудиофайл от загрузки, пока он воспроизводится через JQuery JPlayer Какой шаблон регулярного выражения мне нужен?

PHP написать двоичный ответ

В php существует способ записи двоичных данных в поток ответов,
как эквивалент (c # asp)

System.IO.BinaryWriter Binary = new System.IO.BinaryWriter(Response.OutputStream); Binary.Write((System.Int32)1);//01000000 Binary.Write((System.Int32)1020);//FC030000 Binary.Close(); 

Затем я хотел бы прочитать ответ в приложении ac #, например

 System.Net.HttpWebRequest Request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("URI"); System.IO.BinaryReader Binary = new System.IO.BinaryReader(Request.GetResponse().GetResponseStream()); System.Int32 i = Binary.ReadInt32();//1 i = Binary.ReadInt32();//1020 Binary.Close(); 

    В PHP строки и байтовые массивы – одно и то же. Используйте pack для создания байтового массива (строки), который вы можете записать. Как только я понял, жизнь стала легче.

     $my_byte_array = pack("LL", 0x01000000, 0xFC030000); $fp = fopen("somefile.txt", "w"); fwrite($fp, $my_byte_array); // or just echo to stdout echo $my_byte_array; 

    Это тот же ответ, который я отправил на этот вопрос, подобный вопрос .

    Предполагая, что массив $binary является ранее построенным байтом массива (например, монохромным растровым пикселем в моем случае), который вы хотите записать на диск в этом точном порядке, приведенный ниже код работал на меня на 1055t AMD, работающем на сервере ubuntu 10.04 LTS.

    Я повторил все виды ответов, которые я мог найти в Сети, проверяя вывод (я использовал либо shed, либо vi, как в этом ответе ), чтобы подтвердить результаты.

     <?php $fp = fopen($base.".bin", "w"); $binout=Array(); for($idx=0; $idx < $stop; $idx=$idx+2 ){ if( array_key_exists($idx,$binary) ) fwrite($fp,pack( "n", $binary[$idx]<<8 | $binary[$idx+1])); else { echo "index $idx not found in array \$binary[], wtf?\n"; } } fclose($fp); echo "Filename $base.bin had ".filesize($base.".bin")." bytes written\n"; ?> 

    Обычно я использую chr() ;

     echo chr(255); // Returns one byte, value 0xFF 

    http://php.net/manual/en/function.chr.php

    Вам, вероятно, нужна функция пакета – она ​​дает вам приличный объем контроля над тем, как вы хотите, чтобы ваши значения структурировались, например, 16 бит или 32 бита за раз, мало-по-конечному и big-endian и т. Д.