如何在Java中比较字节压缩字符串?

如何在Java中比较字节压缩字符串?,java,string-comparison,Java,String Comparison,我的Java应用程序有一个字节压缩字符串对象,它由通过外部连接接收的远程数据组装而成。绳子是这样组装起来的: 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'; 不要附加0,在循环中使用i: byte[]

我的Java应用程序有一个字节压缩字符串对象,它由通过外部连接接收的远程数据组装而成。绳子是这样组装起来的:

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';

不要附加0,在循环中使用i:

    byte[] buffer = new byte[20];
    /* ... buffer is loaded ... */

    String strVal = "";
    for (int i = 0; i < 8; i++) {
        strVal += (char) buffer[i];
    }

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

您是否尝试过简单的System.out.printlnstrVal;只是想看看strVal中存储了什么。顺便问一下,你为什么要这样做呢;在爪哇?我认为在java中不需要它,请取出它,看看它是否解决了问题。为什么要在strVal中附加一个“\0”?为什么要在循环的buffer[]中使用j作为索引?应该是我吗?我想他用j是因为他不需要完整的单词,他只需要在第9和第17位之间输入单词store。你说的字节压缩是什么意思?您的代码似乎暗示字节只是ASCII字节,它不是真正的压缩,只是用单字节字符集编码,因此使用将从索引9开始的8个字节转换为字符串。您还可以查看这个答案,它很好地解释了为什么字符串中不需要\0。为什么你们认为当OP专门编写代码来提取从索引9开始的字符串时,OP并不是这个意思?您的答案看起来像是在循环中使用i是不附加0的解决方案,但事实并非如此。要不附加0,只需删除循环后面的语句,即显式添加0的语句。
    byte[] buffer = new byte[20];
    /* ... buffer is loaded ... */

    String strVal = "";
    for (int i = 0; i < 8; i++) {
        strVal += (char) buffer[i];
    }