将四个字节转换为32位无符号整数

霍姆

我在PHP脚本中有一个很大的二进制缓冲区,找到了特定的位置。我需要将4字节值转换为32位整数。

$seg = hex2bin("AABBCC00010014AABBCC");
$findStart=3;
echo bin2hex($seg[$findStart+0]);
echo bin2hex($seg[$findStart+1]);
echo bin2hex($seg[$findStart+2]);
echo bin2hex($seg[$findStart+3]);

Prints:
00010014

我需要转换seg[findStart+0 .. findStart+3]为32位整数。如何在PHP脚本中做到这一点?本示例是一个十进制数字65556。

即时通讯

这正是该函数的目的,unpack函数采用格式字符串并从二进制字符串中提取数据。

查看格式代码列表和您的示例,我相信您想要

N:无符号长整数(始终为32位,大字节序)

所以看起来像这样:

$int = unpack('Nvalue', $seg, $findStart)['value'];

为了与旧版本的PHP(<7.1)兼容,可以通过将固定数量的字节消耗到忽略的变量中来模拟offset参数:

$int = unpack("c{$findStart}ignore/Nvalue", $seg)['value'];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将四个8位无符号整数合并为一个32位无符号整数

c ++将四个无正弦的字符转换为一个无符号整数

将 32 位无符号整数转换为大端字节数组的最稳定方法?

将四个字节类型转换为 4 字节 int

四个字节中的四个整数?

将32位数字转换为四个8位数字

使用C ++将四个字节转换为Integer

crc 将 C 代码转换为 Java 的四个字节产生意外结果

如何将32位带符号整数转换为64位无符号整数的高32位?

将32位整数值转换为无符号16位整数

Armv8a NEON 内联汇编代码:如何将 16x8 位向量转换为四个 4x32 位(整数)向量?

将32位大字节序有符号整数转换为有符号小字节序整数

将一个字节转换为有符号字节或整数

如何将16位无符号整数转换为较大的8位无符号整数?

将8个连续字节转换为半字节的最快方法(以32位整数编码)

从char数组转换为16位有符号整数和32位无符号整数

将int转换为16位无符号短整数

在 Scala 中,如何像 Ruby 的 .pack(“N”) 那样打包 BigInt 将四个字符视为网络字节顺序中的无符号长整型?

如何将一个无符号长整数(32位)拆分为8个半字节?

将Integer转换为4个字节的无符号char矢量(按Big Endian字节顺序)

如何在AVX2中从32位无符号整数转换为16位无符号整数?

如何将 16 位无符号整数转换为 8 位无符号字符并最终返回无符号字符*?

在Java中将无符号的32位整数转换为长度为4字节的字节数组,反之亦然

使用struct将4个字节转换为整数

将2个字节转换为小整数

将 32 位有符号整数转换为 64 位整数,同时保留精确位

从2或4个字节转换为有符号/无符号short / int

将无符号字节转换为有符号字节

将16位无符号整数数组转换为位的快速方法