Здравствуйте! Есть такой функция на Си:
int crc8(const char* data)
{
const char *p;
int n, crc = 0xFFF;
for (p = data; *p; ++p) {
crc ^= *p << 8;
for (n = 0; n < 8; ++n)
crc = ((crc & 0x8000) ? (crc << 1) ^ 0x1021 : crc << 1);
}
return crc;
}
Если ей на вход подать "Hello" то она возвратит 2752308620.
И есть аналогичная функция на Perl:
sub crc8 {
my $data = shift;
my $crc = 0xFFF;
my $c = length($data);
for (my $i = 0; $i < $c; ++$i) {
$crc ^= ord(substr($data, $i, 1)) << 8;
for (my $n = 0; $n < 8; ++$n) {
$crc = (($crc & 0x8000) ? ($crc << 1) ^ 0x1021 : $crc << 1);
}
}
return $crc;
}
Если ей на вход подать "Hello" то она возвратит 19044467563357580
Почему?
Ответ на:
комментарий
от phoenix
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум libusb - определение серийного номера (2011)
- Форум Громко ругаем реализацию List to CSV line (2014)
- Форум C++ велосипед библиотеки хэш-функций (2013)
- Форум [Исходники Qt][ООП] Что-то я не пойму... (2010)
- Форум Защита от переполнения буфера (2002)
- Форум mysql++ вопрос по с++ (2009)
- Форум Через g++ компилируется, через gcc не компилируется. (2013)
- Форум Соединится с сервером по сокету? (2020)
- Форум g++ expects argument (2013)
- Форум Вывести содержание бинарного файла (2013)