首页 > 解决方案 > 4 字节大端到 int

问题描述

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

$bytes = "00000103";
$keywords = preg_replace("/(.{2})(.{2})(.{2})(.{2})/u", "\x$1\x$2\x$3\x$4", $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 个字符(带问号的框)。

标签: phppreg-replacepackunpack

解决方案


您可以简单地使用hexdec-function

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

推荐阅读