因为自己写的kwsify是通过过纯文本json发送数据帧的如果想发送二进制数据的话就没办法了于是我就了解了一下kotlin中操作二进制数据的方法下面就是具体思路
- 首先需要编码/解码二进制需要一个数据载体这个载体就是
ByteBuffer
(当然也可以是DataOutputStream
)这里为了更清楚的操作二进制我就使用ByteBuffer来操作 - 还需要一个数据类来存放解码后/编码前的人类可读数据
data class OPCodePacket(
val op: Int,
val body: String
) {
fun toByteArray(): ByteArray {
val bodySize = body.toByteArray().size
val body = body.toByteArray()
val totalLength = 4 + 4 + bodySize
val buffer = ByteBuffer.allocate(totalLength).apply {
putInt(op)
putInt(bodySize)
put(body)
}
return buffer.array()
}
companion object {
fun fromByteArray(buffer: ByteBuffer): OPCodePacket {
buffer.flip()
val op = buffer.int
val bodySize = buffer.int
val body = ByteArray(bodySize).apply {
buffer.get(this)
}
return OPCodePacket(op, String(body))
}
}
}
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:[email protected],工作室将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有。