Как увеличить значение dechex() php

163
29 апреля 2018, 20:28

Код:

echo $hex = dechex("10000000000000000000");
echo '<br>';
echo number_format(hexdec($hex), 0, '.', '');

Результат:

7fffffffffffffff
9223372036854775808

Вопрос: можно ли перевести число больше 9223372036854775808 в hex?

Answer 1

Можно написать свои функции конвертации и работать со строками, а не с числами через функции для произвольной точности вычислений

<?php
function bchexdec($hex) {
    if(strlen($hex) == 1) {
        return hexdec($hex);
    } else {
        $remain = substr($hex, 0, -1);
        $last = substr($hex, -1);
        return bcadd(bcmul(16, bchexdec($remain)), hexdec($last));
    }
}
function bcdechex($dec) {
    $last = bcmod($dec, 16);
    $remain = bcdiv(bcsub($dec, $last), 16);
    if($remain == 0) {
        return dechex($last);
    } else {
        return bcdechex($remain).dechex($last);
    }
}
var_dump($hex = bcdechex("10000000000000000000"));
var_dump(bchexdec($hex));

Результат:

string(16) "8AC7230489E80000"
string(20) "10000000000000000000"
READ ALSO
Полный стек вызова функций PHP

Полный стек вызова функций PHP

Подскажите инструмент для анализа полного последовательного вызова функций и методов с указанием передаваемых аргументов при выполнении...

192
Вывод информации из json в html

Вывод информации из json в html

есть задача выводить данные из json:

168
Не удалось выполнить задачу GenerateResource

Не удалось выполнить задачу GenerateResource

Пытаюсь запустить/собрать WPF приложение, которое находится вместе сnet core приложением в одном решении

504