Пожалуйста, посмотрите на DataInput.readChar()
, который гласит:
Считывает два входных байта и возвращает значение символа. Пусть a
будет первым прочитанным байтом, а b
будет вторым байтом. Возвращаемое значение:
(char)((a << 8) | (b & 0xff))
Этот метод подходит для чтения байтов, записанных методом writeChar
интерфейса 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())