PHP包警告:包():未使用的参数

PHP包警告:包():未使用的参数,php,encoding,pack,Php,Encoding,Pack,我越来越 警告:pack():中有1个未使用的参数 $vector = pack("H*",0x77,0x99); $vector = pack("H*","4A","76"); // with quotes also give same warning 但是如果我只使用一个值,就没有警告 $vector = pack("H*",0x77); 有人知道这个警告吗 我应该传递什么值来打包。它应该是十六进制吗?您应该在字符串中传递十六进制,如下所示: $vector = pa

我越来越

警告:pack():中有1个未使用的参数

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




 $vector = pack("H*","4A","76");  // with quotes also give same warning
但是如果我只使用一个值,就没有警告

 $vector = pack("H*",0x77); 
有人知道这个警告吗


我应该传递什么值来打包。它应该是十六进制吗?

您应该在字符串中传递十六进制,如下所示:

$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]));

如果我对PHP的理解正确,那么
0x77
首先被转换成一个十进制值,
119
,然后被转换成一个字符串,呃,
'119'
,然后仍然通过十六进制解码?是的,它通过了:结果是十六进制的
1190
。嘘,谢谢。但即使我尝试在引号中给出两个值,我也会得到同样的警告。您是否尝试了两个或多个值?实际上,我必须将.net脚本转换为php。在.net中,它们在字节数组中传递0x4A。那么在php中我应该传递什么呢?您可以传递一个由
“\xHH\xHH”
组成的“字符数组”,其中H是十六进制字符。当然,你可以使用我上面提到的方案,简单地连接十六进制。我过去只使用正则表达式将字节数组转换为另一个。作为一名密码学家,我终于有了一个名为“Octional”的工具,可以在任何形式的字节之间进行转换。不幸的是,这是我在工作中创造的,所以正式来说,这不是我可以分享的。。。谢谢你的信息。。。但是你是说这个还是别的什么。。举个例子$向量=pack('H*',“\x04\x09”);我只有h,c格式的作品有问题。。格式的重要性是什么。。你能在回答中加上那个吗。。是输入还是输出的格式?不需要打包,这已经是一个字节数组了。但是检查编辑后的答案,你应该能够直接复制引号中的C格式。