php - 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 个字符(带问号的框)。
解决方案
您可以简单地使用hexdec-function:
$bytes = "00000103";
$dec = hexdec($bytes);
var_dump($dec); //int(259)
推荐阅读
- python - 如何使用 os.walk 找到文件的路径?
- javascript - 在css中制作javascript脚本
- sql - SQL 查询任何 24 小时时间范围内的客户活动
- html - CSS / HTML创建两个并排,等宽,可折叠的列,在扩展后保留列宽,使用网格?
- python - 我无法在 Windows 上运行 kivy
- ionic-framework - Ionic Vue ( ionic serve /ionic build mode production with .env )
- python - CatBoost 训练后特征信息
- java - 模型运行后是否可以修改实验参数值?
- jasper-reports - 子报表变量始终返回 null
- omnet++ - 无法为 OMNeT++ 5.6.1 安装 inet 框架