работа функции pack

gosha_kap

Новичок
работа функции pack

Добрый день.

функцию pack пытаюсь использовать таким образом

$a=0x1056;
$b=0xBEDEDEFF;

function head()
{
return pack("L",$a,$b);

}

В ответ Warning:pack():1 argument unused

Что это за агрумент который я не использовал? Мне не совсем ясно как работает эта функция -надо передать параметры в сокет в 32 битном машином порядке...
 

gosha_kap

Новичок
string pack ( string $format [, mixed $args [, mixed $... ]] )
разве string $format задает ограничение на количество аргументов ? в мануале же пример типа

Examples


Example #1 pack() example
<?php
$binarydata = pack("nvc*", 0x1234, 0x5678, 65, 66);
?>

The resulting binary string will be 6 bytes long and contain the byte sequence 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.

Или это ограниченния именно на шаблон "L"?
 

gosha_kap

Новичок
Классно...Спасибо...А я думал что nvs Это просто как еще один шаблон =)

-~{}~ 22.09.09 08:14:

еще один вопрос касательно данных в PHP
Когда я присваиваю переменной значение к примеру

$X=0xDEADBEEF;
А потом pack("L",$X) То результат отличается от pack("L",0xDEADBEEF); Причина?
 

zerkms

TDD infected
Команда форума
готовый код покажи, чтобы можно было его проверить и убедиться.
 

zerkms

TDD infected
Команда форума
Wicked
код, который можно выполнить и убедиться, что всё ок я и сам могу написать :)
 

gosha_kap

Новичок
ща пример из кода выложу , значит в другом дело

-~{}~ 22.09.09 09:07:

$PROTO_VERSION_MAJOR=1;
$PROTO_VERSION_MINOR=7;
$PROTO_VERSION=(($PROTO_VERSION_MAJOR)<<16)|($PROTO_VERSION_MINOR);
$MRIM_CS_HELLO=0x1001;
$MAGIC=0xDEADBEEF;
$SEQ=1;
$DATADLEN=0;
$FROM=0;
$FROMPORT=0;

$a=pack("L*",$MAGIC,$PROTO_VERSION,$SEQ,$MRIM_CS_HELLO,0,$FROM,$FROMPORT,0,0,0,0);

И скажем когда я эти данные отправляю
socket_send(xxx, $a, int length,0)
То сервер не принимает этот ответ, если же

$a=pack("L*",0xDEADBEEF,$PROTO_VERSION,$SEQ,$MRIM_CS_HELLO,0,$FROM,$FROMPORT,0,0,0,0);

То все в поряди. вопрос , стоит ли обращаться к наркологу?
 

carlos_php

Новичок
$MAGIC=0xDEADBEEF;
var_dump(pack("L*", $MAGIC)==pack("L*", 0xDEADBEEF));

дает true,
причина в чем-то другом
 
Сверху