php - PHP - 将十六进制值转换为版本字符串
问题描述
我正在使用一个未记录的 API,它提供版本号作为hexdec
值。我希望将其转换为版本控制字符串。
例子
API 提供以下价值117473280
:( hexdec('7008000')
)
这应该转换为字符串:7.00
我做了以下功能来做到这一点:
function getFirmwareFromDechex($dechex) {
if(!empty($dechex) || $dechex !== '0') {
$dechex = dechex($dechex);
$dechex = substr($dechex, 0, 3);
$dechex = number_format($dechex / 100, 2);
return $dechex;
}
return false;
}
echo getFirmwareFromDechex('117473280');
这有效。但是,当它必须转换 10.00 版本时,它会将其转换为 1.00。
如何使该功能与更高版本号(例如 10.00)兼容?
更新
在查看了第三方如何在他们的网站上显示这些版本之后,似乎我需要在左边的数字上填充一个 0。
解决方案
我认为十六进制字符串应该是 8 个字节长,所以用 0 (str_pad()
with STR_PAD_LEFT
)填充开头,然后取前 4 个字符......
function getFirmwareFromDechex($dechex) {
if(!empty($dechex) || $dechex !== '0') {
$dechex = str_pad(dechex($dechex), 8, 0, STR_PAD_LEFT);
$dechex = substr($dechex, 0, 4);
$dechex = number_format($dechex / 100, 2);
return $dechex;
}
return false;
}
推荐阅读
- sequelize.js - 使用 sequelize 从表中删除级联 onDelete 约束
- python-3.x - 在 Jupyter Notebook 中启动内核失败
- flutter - 从 App Flutter 内部打开位置权限
- airflow - 气流 dag 依赖项
- javascript - 运行两个模式可以在不同的引导选项卡中运行第三个模式不会
- python - 有没有一种简单的方法可以使用 FuncAnimation 为同一情节中的多个点设置动画?
- python - 如何根据python Django中的条件在行中应用颜色
- excel - 比较 Excel 中的多个数据列表以找出差距
- c++ - 解释为什么这个参数是类方法中的指针?
- node.js - Mongoose:在 mongoose 文档的深度嵌套数组中使用 $addFields、$filter 和 $map