0

我对“pack”/“unpack” php 函数有点困惑,所以我需要 php 等效于以下 Java 代码

....
byte[] TempByte = {1, (byte)0x01};
...

php:

?

谢谢

4

3 回答 3

2

没有真正的 php 等价物,因为 php 是松散类型的,并且没有byte[]类型。

最类似于您的 java 代码的代码是:

$TempByte = array(1, chr(1));
于 2012-10-24T07:41:01.633 回答
1

我不是 100% 确定 Java 代码的作用,但它看起来相当于这样:

$tempByte = "\x01\x01";

“字节数组”本质上是 PHP 中的字符串,或者更确切地说,“字符串”本质上是 PHP 中的字节数组。您甚至可以使用数组偏移量语法访问这个“字节数组”:

echo bin2hex($tempByte[0]);
于 2012-10-24T07:42:36.140 回答
1

您发布的代码初始化了一个包含两个元素 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);
于 2012-10-24T08:06:43.787 回答