首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NMEA校验和计算

NMEA校验和计算
EN

Stack Overflow用户
提问于 2012-10-04 17:58:13
回答 1查看 6.6K关注 0票数 8

我在计算NMEA语句的校验和时遇到问题。我使用了下面的java代码:

代码语言:javascript
复制
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。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-04 18:33:32

假设的校验和和计算的校验和之差等于省略(或有一个额外的字符'3');所以我很容易相信NMEA参考手册中的错误。

您可以尝试一些在线NMEA计算器来验证结果。

例如http://www.hhhh.org/wiml/proj/nmeaxor.html

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12724764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档