PHP - преобразование значения hexde c в строку версии - PullRequest
0 голосов
/ 16 апреля 2020

Я работаю с недокументированным API, который обслуживает номер версии как значение hexdec. Я sh для преобразования этого в строку управления версиями.

Пример

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.

1 Ответ

0 голосов
/ 16 апреля 2020

Я думаю, что шестнадцатеричная строка должна иметь длину 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...