我的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
从字节数组的末尾删除'\0'
解决了这个问题。
不要追加0,在循环中使用i:
byte[] buffer = new byte[20];
/* ... buffer is loaded ... */
String strVal = "";
for (int i = 0; i < 8; i++) {
strVal += (char) buffer[i];
}