如何在PHP中从Hex值查找低字节和高字节?

问题描述

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

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

正如前面提到的代码,我不太了解unpack函数中“ C *”,“ C * myint”,“ c2chars / n2int”的作用。因此,我不确定是否可以使用unpack作为解决问题的方法。非常感谢您的帮助。

谢谢。

解决方法

您可以使用打包功能执行此操作。使用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开始不产生任何折旧通知。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...