我有这些功能:
fun asByteArray(value: Short): ByteArray {
val buffer: ByteBuffer = ByteBuffer.allocate(2)
buffer.order(ByteOrder.BIG_ENDIAN)
buffer.putShort(value)
buffer.flip()
return buffer.array()
}
fun asByteArray(value: Int): ByteArray {
val buffer: ByteBuffer = ByteBuffer.allocate(4)
buffer.order(ByteOrder.BIG_ENDIAN)
buffer.putInt(value)
buffer.flip()
return buffer.array()
}
如果值为255,那么我想将其写入1字节缓冲区。我该怎么做?
如果我执行ByteBuffer.allocate(1)
并尝试写入short / int值,则会发生BufferOverflowException。
答案 0 :(得分:2)
不要直接写Int
,写下value.toByte()
的结果:
fun asByteArray(value: Short): ByteArray {
val buffer: ByteBuffer = ByteBuffer.allocate(1)
buffer.put(value.toByte())
return buffer.array()
}
fun asByteArray(value: Int): ByteArray {
val buffer: ByteBuffer = ByteBuffer.allocate(1)
buffer.put(value.toByte())
return buffer.array()
}