使用String.equals()比较两个相同的字符串始终返回false

时间:2018-12-12 21:42:53

标签: java android

我感觉这里缺少明显的东西,但是我已经在此浪费了太多时间。我正在使用以下命令获取NMEA句子的校验和:

String[] splitData = sentence.split("[,*]");
int i = 0;
for (char c : (sentence.substring(1, sentence.indexOf("*"))).toCharArray()) { 
    i = i ^ c;
}
String checksum = Integer.toHexString(i).toUpperCase();
if (!checksum.equals(splitData[splitData.length - 1].toUpperCase())) {
    Log.d(getClass().getName(), "Checksum failed! Expected: " +
        splitData[splitData.length - 1].toUpperCase() +
        " Got: " + checksum);
}

这是Log输出:

NmeaParser: Checksum failed! Expected: 66 Got: 66
NmeaParser: Checksum failed! Expected: 1E Got: 1E
NmeaParser: Checksum failed! Expected: 2C Got: 2C
NmeaParser: Checksum failed! Expected: 53 Got: 53
NmeaParser: Checksum failed! Expected: 66 Got: 66

我尝试在两个比较过的字符串上使用toString()(我知道,这是多余的,但我很绝望)。我已经尝试了对两个String的trim()来摆脱任何未检测到的空格。我感到困惑。该代码似乎向前挺了,并且日志确认字符串相同。

那...我在这里想念什么?!?

1 个答案:

答案 0 :(得分:2)

if之前写下: String str = splitData[splitData.length - 1].toUpperCase();
然后记录strchecksum的长度
,以防万一2个字符中存在不可打印的字符