java - 从字节数组中读取两个字节

标签 java byte

我正在用 Java 创建一个简单的应用程序,它允许我读取文本文件。我有一个字节数组,它被包装到 ByteBuffer 中:

 FileInputStream inputStream = new FileInputStream(name);
 FileChannel channel = inputStream.getChannel();
 byte[] bArray = new byte[8192];
 ByteBuffer byteBuffer = ByteBuffer.wrap(bArray);
 int read;

然后我使用 while 循环遍历文本文件:

while ( (read=channel.read(byteBuffer)) != -1 )
{
    for ( int i=0; i<read; i++ )
        //my code
    byteBuffer.clear( );
}

我的问题是在这种情况下如何读取 Unicode 字符。 Unicode 字符由 2 个字节(16 位)组成,所以我假设 bArray[i] 包含前(高)8 位,随后的 8 位是该字符的第二部分。因此,例如,如果我需要找出这个字符:“#”当前是否在索引 i 和 i + 1 上,我可以这样做吗? (二进制表示中的“#”:0010 0011):

if (bArray[i] == (byte)10 && bArray[i+1] == (byte) 11)

感谢回复

最佳答案

简单的答案是您不应将文本数据视为字节流。具体来说,这意味着:不要使用 ByteBuffer

使用 InputStreamReader ,它知道如何使用给定的编码解释字节序列。

关于java - 从字节数组中读取两个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827809/

相关文章:

java - 获得临时操作,没有draw()计时错误

c# - 根据字节大小将列表分成批处理

Java - 将 ASCII 转换为不带前导零的二进制

Tomcat 8 根路径上的 Java Web Maven 项目。如何?

java - 具有相同签名的两种方法,为什么有效

java - 如何将相同类型的ArrayList项添加到另一个ArrayList项中?

c - 用指针存储的数据

MySQL 错误 #1071 - 指定的键太长;最大 key 长度为 767 字节

java - 将字节转换为位图

java - Cocol/R 预测解析器实现 Java