powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PERL] шестнадцатиричные числа
7 сообщений из 7, страница 1 из 1
[PERL] шестнадцатиричные числа
    #37750632
Владимир Г.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой код где нужно выполнить оперецию с шестнадцатиричными кодами(х64)

$addr = 000000004001f950;
$baseaddr = 000000000012FAE0;
$prefbaseaddr = 0000000140000000;

$realaddr = hex($addr)-hex($baseaddr)+hex($prefbaseaddr); #line 170

понимаю в чем проблема но как решить не знаю(с х32 кодами все ок)
Integer overflow in hexadecimal number at хххх.pl line 170,
Hexadecimal number > 0xffffffff non-portable at хххх.pl line 170,

Спасибо.
...
Рейтинг: 0 / 0
[PERL] шестнадцатиричные числа
    #37750664
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Г.,

что за функция hex?
Код: php
1.
$realaddr = hexdec($addr)-hexdec($baseaddr)+hexdec($prefbaseaddr); #line 170
...
Рейтинг: 0 / 0
[PERL] шестнадцатиричные числа
    #37750758
Владимир Г.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,

Это перл - hex - Интерпретирует строковое ВЫРАЖЕНИЕ как шестнадцатиричное число и вычисляет его десятичный эквивалент.
проблема в том что это 10 ричное число выходит за грници инт.
...
Рейтинг: 0 / 0
[PERL] шестнадцатиричные числа
    #37750897
Владимир Г.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Г.,

кажись она таки работает- получаю десятичное число 5368730473, но проблема в переводе полученого числа в шестнадцатиричную систему. для перевода (х32) использовал функцию
Код: plsql
1.
sprintf "%x", $addr;


в случае с большими числами ошибка Integer overflow in hexadecimal number at
...
Рейтинг: 0 / 0
[PERL] шестнадцатиричные числа
    #37751132
Владимир Г.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблему решил делением числа на две части, каждую перевел в 16 и склеил
Код: plsql
1.
2.
3.
4.
5.
$div = hex '0xffffffff'; 
$realaddr = hex($addr)-hex($baseaddr)+hex($prefbaseaddr);
$intdiv = sprintf "%x", $realaddr/($div+1);
$remdiv = sprintf "%x", $realaddr%($div+1);
$realaddr = $intdiv.sprintf('%08s', $remdiv);
...
Рейтинг: 0 / 0
[PERL] шестнадцатиричные числа
    #37752074
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Г.,

Включите поддержку 64bit integer в Перле. Ключ компиляции сами поищите.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
[PERL] шестнадцатиричные числа
    #38479029
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Г.Есть такой код где нужно выполнить оперецию с шестнадцатиричными кодами(х64)

$addr = 000000004001f950;
$baseaddr = 000000000012FAE0;
$prefbaseaddr = 0000000140000000;

$realaddr = hex($addr)-hex($baseaddr)+hex($prefbaseaddr); #line 170

понимаю в чем проблема но как решить не знаю(с х32 кодами все ок)
Integer overflow in hexadecimal number at хххх.pl line 170,
Hexadecimal number > 0xffffffff non-portable at хххх.pl line 170,

Спасибо.


bigint - Transparent BigInteger support for Perl

use bigint;
$realaddr = hex($addr)-hex($baseaddr)+hex($prefbaseaddr);
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PERL] шестнадцатиричные числа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]