Задать вопрос
parsek
@parsek

Как конвертировать строку содержащую uint64 число в hex значение на PHP?

Имеется PHP, поддерживающей 64 бит.
Имеются много строк содержащих числа uint64.
Есть ли способ конвертировать числа из строк в 64 битное hex значение.
Знаю про функцию pack, но она не работает в этом случае.

Пока удалось сделать такое решение, может есть более красивое?
// Преобразуем в HEX строку
$str = gmp_strval($num, 16);

// Преобразуем в HEX значения
$hex = '';
for ($i = 0; $i < strlen($str) - 1; $i += 2)
    $hex .= chr(hexdec($str[$i].$str[$i + 1]));

 // Дополняем ведущими нулями
while (strlen($hex) < 8)
	$hex = chr(0x00).$hex;
  • Вопрос задан
  • 124 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
поправил ответ:

чтобы преобразовать в hex нужно использовать bin2hex (dechex не подойдет, но не умеет нулями дополнять слева), pack в формате big indean, а ограничение целого числа (так как числа знаковые в php) решить используя bcmath, подлелить на 0x100000000 и взять остаток для левой и правой части результата соответственно
upd:
$val='9223372036854775808';
echo bin2hex(pack('N',bcdiv($val,0x100000000,0))).bin2hex(pack('N',bcmod($val,0x100000000,0)));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы