我读了here如何在PHP中使用pack
函数。
根据文档,将打印h
格式
十六进制字符串,首先是低半字节
我想检查它是如何工作的,所以我运行了以下命令:
echo pack("h*", 0x41) . "<br />" ;
你可以在this在线PHP命令网站上试试。
它打印字符V
。
但0x41
是十进制的65
,二进制的01000001
和ASCII / ANSI的A
。
为什么它打印V
而不是A
?
我知道它包装在二进制结构中,但二进制结构是01000001
,应该是A
。
确切地说,使用正确的h
格式,首先是低位半字节,所以:
echo pack("h*", "14");
输出:
A
H
的相同输出首先是高半字节:
echo pack("H*", "41");
最好使用H
来获得更直观的效果。
我认为你使用了错误的格式,包的格式如下所示:
所以你试试这样:
echo pack("h*", 0x41) . "<br />" ;
它打印角色V.
当你这样尝试时:
echo pack("c*", 0x41) . "<br />" ;
它打印角色A.