用PHP解释为无符号32位整数

时间:2017-08-20 11:18:13

标签: php integer unsigned

我正在尝试为World of Tanks制作一个能够阅读战斗重播的小工具。 您可以看到there每个重播包含的内容,there就是一个例子。

不幸的是我不明白维基文章的这一部分:

  

读取4个字节,并将其解释为无符号32位整数,将其作为“块计数”

我尝试将他们的Java代码转换为PHP,但它始终输出“0”。 我也试过在php.net/manual/en/language.types.integer.php#38478找到的代码,但它也输出“0”。

这是我目前的代码:

function parse($string)
{
$x = (float)$string;
if ($x > (float)2147483647)
$x -= (float)"4294967296";
return (int)$x;
}

$replay = file_get_contents('steppes.txt');

$magic = substr($replay, 0, 4);
$count = substr($replay, 4, 4);

echo $magic." -- ".parse($magic)."<br>".$count." -- ".parse($count);

1 个答案:

答案 0 :(得分:0)

您可以使用PHP函数unpack来转换二进制数据。

在您的情况下,您应该使用代码<{p}来代替

  

无符号长整数(总是32位,小端字节顺序)

(long是用于32位整数的名称)。您没有指定使用的字节顺序,但查看您的演示数据我认为它是小端。有关所有&#39;代码的列表,请参阅pack-function的文档。

V