PHP - 将十六进制值转换为版本字符串
PHP - converting hexdec value to version string
我正在使用一个未记录的 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()
和 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;
}
我正在使用一个未记录的 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()
和 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;
}