2014-08-28 5 views
0

Я получаюPHP пакет Внимание: пакет(): аргументы неиспользованных

Внимания: упаковка(): 1 аргументы неиспользованный в

$vector = pack("H*",0x77,0x99); 




$vector = pack("H*","4A","76"); // with quotes also give same warning 

, но если я использую только одно значение нет Предупреждения

$vector = pack("H*",0x77); 

Знаете ли вы об этом предупреждении?

какое значение я должен передать в пакет. это должен быть гекс?

+0

Так что, если я понимаю PHP право, то '0x77' сначала преобразуется в десятичное значение, '119', который затем преобразуется в строку, eh,' '119'', которая затем все еще проходит шестнадцатеричное декодирование? –

+0

И да, это так: результат «1190» в шестнадцатеричных. Sheesh. –

ответ

2

Вы должны передать его шестнадцатеричный в строке, например, так:

$vector = pack("H*", "7799"); 

Если вы используете 0x77 у вас уже есть числовое значение со значением 77h, т.е. компилятор преобразует значение из шестнадцатеричных в двоичный - нет необходимости использовать pack.

Если вы действительно хотите использовать 0x77,0x99 обозначения, а затем положить обозначения в кавычки и используйте следующее:

$hex="0x77,0x99"; 
preg_match_all("/0x([0-9A-F]{2})/i", $hex, $out); 
$data = pack("H*", join($out[1])); 
+0

Спасибо. Но даже если я попытаюсь дать два значения в цитате, я получаю такое же предупреждение. вы попробовали два или более значений? На самом деле мне нужно преобразовать сетевой скрипт в php. в .net они передают 0x4A в массиве байтов. так что в php, что я должен пройти? – zod

+0

Вы можете передать просто «массив символов», состоящий из '' \ xHH \ xHH'', где H является шестнадцатеричным символом. Вы могли бы, конечно, со схемой, которую я поставил выше, и просто соединить гексадецималы. Я просто использовал регулярные выражения для преобразования массивов байтов в другой. Как криптограф, я, наконец, получил достаточно и теперь имеет инструмент под названием «Октациональный», который преобразует любую форму байтов. К сожалению, я создал это, когда на работе, так официально, что это не мое, чтобы поделиться. –

+0

oh man ... спасибо за информацию ... но вы имели в виду это .. или что-то еще .. просто укажите один пример .. $ vector = pack ('H *', "\ x04 \ x09"); – zod

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