4 字节 big-endian 到 int

4 bytes big-endian to int

我有一个文件,其中包含要解释的数据(关键字),并以 4 字节大端开始以确定关键字的数量。我似乎无法从中获得正确的整数值。

$bytes = "00000103";
$keywords = preg_replace("/(.{2})(.{2})(.{2})(.{2})/u", "\x\x\x\x", $bytes);
var_dump($keywords);
$unpacked = unpack("N", $keywords);
var_dump($unpacked);

输出(不正确):

string(16) "\x00\x00\x01\x03"
array(1) {
  [1]=>
  int(1551380528)
}

出于测试目的,我将 $keywords 变量更改为:

$bytes = "\x00\x00\x01\x03";

它输出(正确):

string(4) ""
array(1) {
  [1]=>
  int(259)
}

如何更改 $keywords 的数据类型?搜索了很多,但不幸的是无法让它工作。

PS。发布后,它不会在 string(4) 的正确输出中显示其中的 2 个字符(带问号的框)。

您可以简单地使用 hexdec-function:

$bytes = "00000103";
$dec = hexdec($bytes);
var_dump($dec);  //int(259)