php - 如何从 PHP 中的十六进制值中找到低字节和高字节?
问题描述
我有一系列十六进制值,如 0x1b12、0x241B、0x2E24、0x392E,我需要从这些十六进制值中的每一个计算低字节和高字节以进行进一步处理。我怎样才能做到这一点?我做了一些研究,发现 php 中有一个unpack函数,但是参数中的“格式”部分让我感到困惑。我看到的一些解压代码添加在下面。
unpack("C*",$data)
unpack("C*myint",$data)
unpack("c2chars/n2int",$data)
正如前面提到的代码,我不太明白 "C*","C*myint","c2chars/n2int" 在 unpack 函数中的作用。所以我不太确定我是否可以使用 unpack 作为我的问题的解决方案。非常感谢您的帮助。
提前致谢。
解决方案
您可以使用 pack 功能执行此操作。使用位运算符更容易和更快:
$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 开始不会生成折旧通知。
推荐阅读
- python - 使用 Keras 数据生成器时的冗长时期
- python - Python:遍历csv的行并在列发生变化时计算日期差
- javascript - 如何更改轮廓颜色极坐标plotlyjs
- vue.js - 我可以从 btn 做一个浮动对话框吗?
- c# - 从 .net 应用程序到 Azure 数据工厂的 Rest 调用以获取预览数据
- .net-core - 在 aspnetboilerplate 上使用 Hot Chocolate Graphql
- git - 只保留 Git 历史的标签
- php - PHP imap: how to decode and convert Windows-1252 charset emails?
- javascript - use position: "absolute" in CSS React grid context with gridTemplateColumns
- kubernetes - How to implement security in confluent helm charts for kafka