gpt4 book ai didi

java - NMEA校验和计算

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:20:55 24 4
gpt4 key购买 nike

我在计算 NMEA 语句的校验和时遇到问题。我正在使用以下 Java 代码:

private static String getSum(String in) {
int checksum = 0;
if (in.startsWith("$")) {
in = in.substring(1, in.length());
}

int end = in.indexOf('*');
if (end == -1)
end = in.length();
for (int i = 0; i < end; i++) {
checksum = checksum ^ in.charAt(i);
}
String hex = Integer.toHexString(checksum);
if (hex.length() == 1)
hex = "0" + hex;
return hex.toUpperCase();
}

此代码与互联网上的许多其他示例类似,在我尝试这样的句子之前一切正常。

$PSRF101,-2686700,-4304200,3851624,96000,497260,921,12,3*1C

这句话来自NMEA Reference Manual所以我假设校验和是正确的。但是当我计算它时,我得到 *2F 作为校验和而不是 1C。

我认为这是因为句子中的负值,但我不知道如何处理它们。有人有什么建议吗?

最佳答案

假定校验和与计算校验和之差等于省略(或有一个额外的字符“3”);所以我很想相信 NMEA 引用手册中的错误。

您可以尝试一些在线 NMEA 计算器来验证结果。
例如http://www.hhhh.org/wiml/proj/nmeaxor.html

关于java - NMEA校验和计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12724764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com