Java int数组到StringBuilder

Java int数组到StringBuilder,java,arrays,integer,stringbuilder,Java,Arrays,Integer,Stringbuilder,如何在while循环中将具有UTF-8字符串的int数组转换为StringBuilder? 例如: 整数数组:71,73,70,56,57,97,149,0,55,0247… 结果字符串:GIF89a•÷€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ 该行包含拉丁、西里尔和亚洲字符,以及各种符号和数字 do buffer.append((char)num[++i]); while((byte)buffer.charAt(buffer.length()-1)

如何在while循环中将具有UTF-8字符串的int数组转换为StringBuilder? 例如:
整数数组:71,73,70,56,57,97,149,0,55,0247…
结果字符串:GIF89a•÷€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ 该行包含拉丁、西里尔和亚洲字符,以及各种符号和数字

do buffer.append((char)num[++i]);
while((byte)buffer.charAt(buffer.length()-1) != -1);
此方法将所有非拉丁字符分解为每个字节一个整数,然后将其作为文本字符串打印出来。主要的问题是,该文件中的整数(字节)实际上并没有映射到有意义的文本字符,因此当映射无法呈现字母表的部分时,它将呈现您的文本编码所要求的任何内容(在我看来,这就像一堆垃圾)

图形信息并不总是清晰地映射到文本。虽然有256个可能的字节值,有时一个或多个字节将代表一个字符,但英语字母表中只有26个字母,用大写和小写表示。除了十位数字和少量标点符号,你还可以得到80个不同的字符,这些字符在一篇文章中很常用。剩下的160多个字符是控制代码、使用多字节的信号,或者是到支持外语显示的字符的映射


该垃圾与当前字符集的有效字节到字符映射最接近。如果想要更好的输出,请尝试读取包含映射到与字符相关的数据的文件。

首先将int[]转换为byte[],如下所示:

    //intArray contains your data...
    byte[] utf8bytes = new byte[intArray.length];
    for(int i = 0; i < intArray.length; i++)
    {
        utf8bytes[i] = (byte) intArray[i];
    }

您能显示整个缓冲区的数据吗?+1用于获取问题中的奇怪符号:)不,这只是一个例子,这个程序不是为读取文件而设计的。该程序将处理俄语和亚洲语言的文本消息。从您选择的示例值中,int包含1个字节,而不是4个字节。看起来您处理的int数组小于256,因此很容易转换为字节。如果你确实有4个字节打包到你的整数中,它们大部分会有非常大的绝对值。如果是这样的话,您可以使用位掩码和逻辑移位将它们解压成单独的字节……utf8bytes[0]=(byte)(intArray[i]>>>24);utf8bytes[1]=(字节)(数组[i]>>>16);utf8bytes[2]=(字节)(数组[i]>>>8);utf8bytes[3]=(字节)数组[i];每个拉丁字符后添加3个空格字符。在每个西里尔字母后添加2个空格字符。
    String asString = new String(utf8bytes, "UTF-8");