Я пытаюсь создать контрольную сумму для протокола NEMA (протокол GPS), используя perl. Образец NEMA слово строка символов, как показано нижеКак сгенерировать контрольную сумму XOR для строки с использованием perl
$GPGLL,5300.97914,N,00259.98174,E,125926,A*28
Контрольная сумма рассчитывается, принимая XOR всех символов между $
и *
. В этом предложении контрольная сумма является символьное представление шестнадцатеричного значения 28.
Я попытался следующие:
my $NMEA_word = 'GPGLL,5300.97914,N,00259.98174,E,125926,A';
my $uff = unpack('%8A*', $NMEA_word);
print "Hexadecimal number: ", uc(sprintf("%x\n", $uff)), "\n";
Но это, кажется, не дает правильного значения. Просьба предложить то, что должно быть исправлено
Иногда я чувствую, что должна быть возможность upvote большее количество раз. Вы сохранили мой день – bubble
нет необходимости в верхнем регистре, просто используйте '% X' вместо'% x' – ysth