如何从 PHP 中的十六进制值中找到低字节和高字节?

How to find the Lower and Upper Byte from Hex value in PHP?

我有一系列十六进制值,如 0x1b12、0x241B、0x2E24、0x392E,我需要从这些十六进制值中的每一个计算低位字节和高位字节以进行进一步处理。我怎样才能做到这一点?我做了一些研究,发现 php 中有一个 unpack 函数,但参数中的“格式”部分让我感到困惑。下面添加一些我看到的解包代码。

unpack("C*",$data)
unpack("C*myint",$data)
unpack("c2chars/n2int",$data)

前面提到的代码,我不太明白"C*","C*myint","c2chars/n2int"在u​​npack函数中做了什么。所以我不太确定我是否可以使用 unpack 作为我的问题的解决方案。非常感谢您的帮助。

提前致谢。

您可以使用 pack 函数来完成此操作。使用 Bitwise Operators:

更容易和更快
$val = 0x1b12;  //or $val = 6930;

$lowByte = $val & 0xff;  //int(18)
$uppByte = ($val >> 8) & 0xff;  //int(27)

代码需要一个整数 $val 作为输入。如果“0x1b12”形式的字符串可用作输入,则必须将其转换为整数:

$stringHex = "0x1b12";  //or "1b12"
$val = hexdec(ltrim($stringHex,'0x'));

ltrim 是必需的,这样从 7.4.0 开始就不会生成折旧通知。