Другой результат при преобразовании строки в CRC-32

Я пытаюсь преобразовать строку в CRC-32 с помощью perl. И я нашел String::CRC32. Но результат от этого модуля отличается от онлайн-конвертера. Вот мой код:

use strict;
use warnings;
use String::CRC32;

my $resi = "nawan";
print crc32($resi) . "\n"; # --output : 3840460347

Результатом этого кода будет 3840460347.

Но когда я пытаюсь преобразовать "nawan" с помощью онлайн-конвертера (этот онлайн-конвертер), , результатом этого онлайн-конвертера будет f082b8df.

Есть ли что-то, чего мне не хватает в CRC-32? Почему результат разный?

Спасибо.


person nawanTSL    schedule 30.04.2018    source источник
comment
Кажется, это другое представление.   -  person simbabque    schedule 30.04.2018
comment
Существует множество определений 32-битной CRC. Вам нужно определить, какой из них вам нужен, исходя из того, с каким протоколом или форматом вы имеете дело.   -  person Mark Adler    schedule 01.05.2018


Ответы (1)


Результат String::CRC32 соответствует десятичному значению выходных данных crc32b версии этот веб-сайт.

use strict;
use warnings;
use String::CRC32;

my $resi = "nawan";
print sprintf("Decimal: %d, Hex: %x\n",crc32($resi), crc32($resi));

вывод

Decimal: 3840460347, Hex: e4e8c63b

e4e8c63b соответствует хешу crc32b слова "nawan", полученному на этом веб-сайте.

person xxfelixxx    schedule 30.04.2018
comment
Да, только что узнал, что результатом String::CRC32 является crc32b. Вы знаете, как получить результат в crc32 с помощью String::CRC32? - person nawanTSL; 30.04.2018
comment
@nawanTSL Это потребует замены String/CRC32.pm чем-то, что делает что-то совершенно другое. - person ikegami; 01.05.2018