【问题标题】:Storing characters as single bytes in java在java中将字符存储为单个字节
【发布时间】:2013-01-31 21:37:01
【问题描述】:

我读到我们应该使用 Reader/Writer 来读取/写入字符数据,使用 InputStream/OutputStream 来读取/写入二进制数据。此外,在 java 中字符是 2 个字节。我想知道以下程序是如何工作的。它从标准输入中读取字符,将它们存储在一个字节中并打印出来。这里的两个字节字符如何适合一个字节?

http://www.cafeaulait.org/course/week10/06.html

【问题讨论】:

    标签: java char byte


    【解决方案1】:

    评论解释得很清楚:

    // Notice that although a byte is read, an int
    // with value between 0 and 255 is returned.
    // Then this is converted to an ISO Latin-1 char 
    // in the same range before being printed.
    

    所以基本上,这假设传入的字节代表 ISO-8859-1 中的一个字符。

    如果您使用具有不同编码的控制台,或者可能提供的字符不在 ISO-8859-1 中,您最终会遇到问题。

    基本上,这不是好代码。

    【讨论】:

      【解决方案2】:

      Java 将字符存储为 2 个字节,但对于普通 ASCII 字符,实际数据适合 1 个字节。因此,只要您可以假设正在读取的文件是 ASCII,那么它就可以正常工作,因为字符的实际数值适合单个字节。

      【讨论】:

      • 谢谢,爱马仕。我知道普通的 ASCII 字符可以放入一个字节。但它们仍然会存储为两个字节,对吧?
      • 当读入 java 时,值将存储在 2 个字节中,因为 char 对象将有 2 个字节分配给它。但是,只有第一个字节是非零的,因为该值只会占用那么多位。
      猜你喜欢
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2013-07-04
      相关资源
      最近更新 更多