在php 4.4.4中:
$hbc=pack("LL",82603088,82602992);
list($v1,$v2)=unpack("L2",$hbc);
echo("v1=".$v1." v2=".$v2);
结果是:
v1 = v2 = 82603088
我已经有几个小时的时间把头包裹起来...... 感谢
答案 0 :(得分:1)
错误不在于打包或解包,而是在list()
。
开启通知!你的代码会这样抱怨:
Notice: Undefined offset: 0 in ...
那会让你好奇。如果转储由unpack返回的数组,则它是正确的:
array(2) {
[1] =>
int(82603088)
[2] =>
int(82602992)
}
然后在list()
的文档页面上有一个小小的注释:
list()仅适用于数值数组,并假设数字索引从0开始。
您的数组不会从索引0开始,通知会告诉您。
快速解决方法是:
list(,$v1,$v2)=unpack("L2",$hbc); // add a comma to skip index 0
更好的方法可能是使用unpack
来创建命名数组索引:
$unpacked = unpack("L2v/",$hbc);
结果:
array(2) {
'v1' =>
int(82603088)
'v2' =>
int(82602992)
}
答案 1 :(得分:0)