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