我对“pack”/“unpack” php 函数有点困惑,所以我需要 php 等效于以下 Java 代码
....
byte[] TempByte = {1, (byte)0x01};
...
php:
?
谢谢
没有真正的 php 等价物,因为 php 是松散类型的,并且没有byte[]
类型。
最类似于您的 java 代码的代码是:
$TempByte = array(1, chr(1));
我不是 100% 确定 Java 代码的作用,但它看起来相当于这样:
$tempByte = "\x01\x01";
“字节数组”本质上是 PHP 中的字符串,或者更确切地说,“字符串”本质上是 PHP 中的字节数组。您甚至可以使用数组偏移量语法访问这个“字节数组”:
echo bin2hex($tempByte[0]);
您发布的代码初始化了一个包含两个元素 bytes 的字节数组。
由于 PHP 是弱类型的,因此您无法获得与此代码完全相同的代码——这可以从PHP 类型列表中看到。
两种语言都有数组,所以我们在这里很好,但 PHP 没有字节。
在 Java 中,一个字节被定义为一个有符号的 8 位值,范围从 -128 到 127(含)。
与 PHP 最接近的是integer,但是:
整数的大小取决于平台,尽管通常值约为 20 亿的最大值(即 32 位有符号)。64 位平台的最大值通常约为 9E18。PHP 不支持无符号整数。自 PHP 4.4.0 和 PHP 5.0.5 起,可以使用常量 PHP_INT_SIZE 确定整数大小,使用常量 PHP_INT_MAX 确定最大值。
所以,我的建议是(对于 32 位平台):
$TempByte = array(0x0001 & 1, 0x0001 & 1);