如何在Java中比较字节打包字符串?

我的 Java 应用程序有一个字节打包的 String 对象,该对象是从通过外部连接接收的远程数据组装而来的。字符串是组装的,如下所示:


byte[] buffer = new byte[20];

/* ... buffer is loaded ... */

int j = 9;

String strVal = "";

for( i=0; i<8; i++ )

{

    strVal += (char)buffer[j++];

}

strVal += '\0';

稍后,我需要验证接收到的数据,但是当我尝试执行以下操作时,它返回 false。缓冲区中的数据和内容(至少是我在调试器中可以看到的内容)都是我所期望的。有什么想法吗?strVal


return strVal.equals("STR GOOD"); // evaluates as false when should be true


POPMUISE
浏览 92回答 2
2回答

慕工程0101907

从字节数组的末尾删除 解决了问题。'\0'

白衣非少年

不要追加 0,在循环中使用 i:&nbsp; &nbsp; byte[] buffer = new byte[20];&nbsp; &nbsp; /* ... buffer is loaded ... */&nbsp; &nbsp; String strVal = "";&nbsp; &nbsp; for (int i = 0; i < 8; i++) {&nbsp; &nbsp; &nbsp; &nbsp; strVal += (char) buffer[i];&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java