如何将Short / Int写入1字节缓冲区

时间:2017-03-01 14:27:04

标签: arrays kotlin bytebuffer

我有这些功能:

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。

1 个答案:

答案 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()
}