我有一个字节数组,数组中的每个字节对应一个ASII字符( 8位ASCII字符)。我正在尝试从列表中获取整个ASII字符列表。
byte[] data;
ArrayList<Character> qualAr = new ArrayList<>();
for (int i = 0; i < data.length; i++) {
qualAr.add((char)data[i]);
}
上面的方法没有正确打印所有ASCII字符,因为打印的字符包含方框和空格。如果问题没有设置编码,那么如何将编码类型设置为ASCII以上方法?大多数例子我都看到了UTF-8的位置。
更新:谢谢大家。问题不在于编码。我找到了新的文档,说明需要使用 - ASCII + 33转换值,并且没有这些值尝试打印初始的ASCII字符,这是没有任何意义的。
答案 0 :(得分:1)
尝试使用以下代码:
String dataConverted = new String(data, "UTF-8");
ArrayList<Character> qualAr = new ArrayList<>();
for (char c : dataConverted.toCharArray()) {
qualAr.add(c);
}
我将您的字节数组转换为String,然后生成字符列表。 ASCII字符应表示为UTF-8中的一个字节代码。
请记住,前32个左右的ASCII字符可能会呈现为方框或空格。
Here is a link到基本的ASCII表。