1

在这里阅读了如何pack在 PHP 中使用该函数。

根据文档,h格式将打印

十六进制字符串,低半字节在前

我想检查它是如何工作的,所以我运行了以下命令:

echo pack("h*", 0x41) . "<br />"  ;

您可以在这个在线 PHP 命令网站 上试用它。

它打印字符V
但是0x4165十进制、01000001二进制和AASCII/ANSI。
为什么它打印V而不是A
我知道它将它打包成二进制结构,但二进制结构01000001应该是A.

4

2 回答 2

1

确切地说,使用正确的格式h,首先是半字节,所以:

echo pack("h*", "14");

输出:

A

H半字节相同的输出:

echo pack("H*", "41");

最好使用H更直观。

于 2019-03-19T07:59:06.463 回答
1

我认为您使用了错误的格式,pack的格式介绍如下:

  1. h :十六进制字符串,低半字节在前
  2. c : 有符号字符

所以你试试这样:

echo pack("h*", 0x41) . "<br />"  ;

它打印字符 V。

当你这样尝试时:

echo pack("c*", 0x41) . "<br />"  ;

它打印字符 A。

于 2019-03-19T08:02:04.453 回答