2013-07-09 1 views
1

Я написал программу на C++, которая отправляет данные POST в php. Мои данные 123456 в двоичном формате, который равен 0x0001e240.Как работать с двоичными данными в php (не бинарной строке)?

Мой файл PHP читает как

$f=fopen("php://input", "r"); 
if (!$f) die ("cannot open"); 
$data = fread($f, 4); 
echo $data; 

В моей приемной программе (в C++), я могу видеть переспросил данные точно 0x0001e240, поэтому я считаю, PHP сделал принять чистую двоичную вещь и сохраняется в $ данных ,

Однако, я хочу получить 123456 в php. Я пробовал такие функции, как bindec, hexdec и т. Д., Но ни один из них не работает. Как я могу получить число из $ data.

Кроме того, мне нужно заботиться о endians in php? Я работаю локально теперь с средой Windows, но я, наконец, поместил свои коды в облако.

Редактировать

$f=fopen("test.bin", "rb"); 
if (!$f) die ("cannot open"); 
$data = fread($f, 4); 
echo $data; 

где test.bin является бин файл, который содержит 0x0001e240. Кажется, что я получил строку в $ data, которая была составлена ​​с ASCII 0x00, 0x01, 0xe2 и 0x40. Как я могу сделать их числовыми?

ответ

1

Вы можете использовать unpack:

$num = unpack('n', $data); 

Используйте заглавную букву для целого числа без знака, и v (или V) для прямого порядка байт. Да, вы должны беспокоиться о контенте. Просто узнайте, что это такое и придерживайтесь его.

+0

Спасибо за ваш ответ. Но я получил уведомление «Уведомление: массив для преобразования строк», и я не получил номер, который я хочу. –

+0

К сожалению, я знал, что я ошибся. и я должен использовать N для 32 бит. Я думаю, что работает! большое спасибо! –

Смежные вопросы