我正在尝试将输入流中的字节编码为纯文本字符。因此,我将字符串由空格分隔的整数组成,如下所示:
InputStream in;
//etc
int b;
String finalString="";
while((b=in.read())!=-1)finalString+=""+b+" ";
in.close()但问题是,这使得字符串比原始字节大3-4倍。有没有其他方法可以把字节编码成纯文本?
发布于 2012-07-12 01:29:10
如果我理解正确的话,您希望将二进制数据转换为纯文本。为此,您应该使用Base64。损失因子将只有4/3。
Apache commons-codec有一个免费的Base64编码器(和解码器)实现。
另一种可能是十六进制编码( commons-codec也支持),但它需要为每个字节的二进制数据提供2字节的文本。
发布于 2012-07-12 01:26:36
如果您可以将所有这些都放到一个byte[]中,那么这应该是
new String(byteArray, StandardCharsets.UTF_16LE);或者您希望输入使用的任何字符编码。
发布于 2012-07-12 01:28:38
您可以获取所有字节并将它们放入一个字节数组中,然后使用字节数组创建字符串。
即
String newString = new String(byteArray);https://stackoverflow.com/questions/11438075
复制相似问题