首页 > 解决方案 > 将输入流字节转换为字符

问题描述

我有带有内容的文本

12       13        14

文本在值 12 和 13 以及 13 和 14 之间有 8 个空格

我的java方法是通过一个参数接收文本作为输入流并将每个内容存储在一个字节数组中,然后进一步将每个字节转换为一个字符

public class FileUpload implements RequestStreamHandler{

String fileObjKeyName = "sample1.txt";
String bucketName="";

/**
 * @param args
 */
 @Override
 public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {

        LambdaLogger logger = context.getLogger();

        byte[] bytes = IOUtils.toByteArray(inputStream);

        StringBuilder sb = new StringBuilder();
        StringBuilder sb1 = new StringBuilder();
        sb.append("[ ");
        sb1.append("[ ");
        for (byte b : bytes) {
            sb.append(b);
            char ch = (char) b;
           sb1.append(ch);

        }
        sb.append("]");
        sb1.append("] ");

        logger.log(sb.toString());
        logger.log(sb1.toString()); 

  }
}

每个字节的十进制表示正确打印如下

[ 4950323232323232323249513232323232323232324952]

但是,当转换为字符时,值之间只有一个十进制值“32”(用于空格)被转换,跳过空格之间的所有剩余字节。

[ 12 13 14]

任何人都可以建议,这是为什么。

标签: java

解决方案


你如何将字节转换为字符串?它会是一样的。见下面的代码:

public static void main(String[] args) {
    byte[] bytes = "12        13        14".getBytes();
    System.out.println(Arrays.toString(bytes));
    String str = new String(bytes,StandardCharsets.UTF_8);
    System.out.println(str);
}

推荐阅读