Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Проблемы с обработкой 128-битовых чисел


Автор: KossChe 30.8.2019, 12:31
Коллеги, добрый день!
Мне нужно сделать операцию исключающего или с двумя 128-битовыми компонентами ключа.
Использую функцию bigint для работы с большими числами. Но при выводе все хорошо работает только с 8-мью младшими разрядами шестнадцатеричного числа. Если разрядов больше, то на выходе идут нули:


use strict;
use warnings;
use bigint qw/hex/;

my $komp1="1111111111111";
my $komp2="fffffffffffff";

printf("%#032x\n", (hex($komp1)^hex($komp2))  );


Выход: 0x00000000000000000eeeeeeee

Можете помочь с этим?

Автор: arto 2.9.2019, 07:20
Код

perl -MMath::BigInt -le 'my $komp1 =  Math::BigInt->new("0x111111111111111111111"); my $komp2 =  Math::BigInt->new("0xfffffffffffffffffffff"); $a = $komp1->bxor($komp2); print $a->to_hex'
eeeeeeeeeeeeeeeeeeeee

Автор: KossChe 2.9.2019, 11:15
Спасибо! У меня правда метод to_hex не находится...наверное версия старая.

Автор: KossChe 2.9.2019, 11:47
as_hex  сработал

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)