我的应用程序使用套接字连接到服务器并读取数据。数据最多有四个字符长,但偶尔会少于这个。数据由 CR LF 组合附加,我不想在下一步处理中出现。
由于我不想阅读超过四个字符,所以我有一个char[4]
缓冲区。然后,考虑到数据少于四个字符的时间(以及 CR 和 LF 字符潜入),我有这个:
for(int i = 0; i < 4; i++) {
String hexString = Integer.toHexString(buffer[i] | 0x10000).substring(1);
if((hexString == "000d") || (hexString == "000a")) {
buffer[i]='0';
}
}
通过明智的日志记录,我可以看到循环按预期执行,但不会覆盖 CR (U+000d) 和 LF (U+000a) 字符。我希望上面的代码用“0”替换任何回车或换行的实例,但缓冲区的内容似乎没有改变。
老实说,无论如何,这感觉像是一种笨拙的方式,所以我的问题有分歧:
- 我的代码有什么问题?如何修复它以按预期执行?
- 有没有更好的方法来做到这一点?