gpt4 book ai didi

kotlin - 为什么DataInputStream无法正确读取char?

转载 作者:行者123 更新时间:2023-12-02 13:34:53 33 4
gpt4 key购买 nike

从DataInputStream读取单个字符时,我试图在DataInputStream中写入String,但是出现错误。

我期望readChar()返回'q',但是方法是:

assertEquals('q', DataInputStream("q".byteInputStream(Charsets.UTF_8)).readChar())

引发异常:

java.io.EOFException at java.io.DataInputStream.readChar(DataInputStream.java:365)

最佳答案

请查看 DataInput.readChar() ,其中指出:

Reads two input bytes and returns a char value. Let a be the first byte read and b be the second byte. The value returned is:

(char)((a << 8) | (b & 0xff))

This method is suitable for reading bytes written by the writeChar method of interface DataOutput.



最后一句话基本上也是解决方案。如果您使用 writeChar写入数据,则读取将按预期进行,即以下内容将为您提供成功的测试用例:
assertEquals('q', DataInputStream(ByteArrayOutputStream().apply {
DataOutputStream(this).use {
it.writeChars("q")
}
}.toByteArray().inputStream())
.readChar())

即使在界面中未提及,以下内容也可以解决:
assertEquals('q', DataInputStream("q".byteInputStream(Charsets.UTF_16BE)).readChar())

关于kotlin - 为什么DataInputStream无法正确读取char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58488192/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com