Kotlin中的简单数据处理之数字存 ByteArray
就一个简简单单的socket端口号存入ByteArray我搞了一个多小时,记录一下自己的超低效率。
以端口号20000为例,先建立一个ByteArray数组,再分别将端口的高八位和低八位取出转换并存储即可。
//初始化字节数组
var res: ByteArray = ByteArray(2)
//取高八位
res[0] = (20000.toInt().ushr(8) and 0xFF).toByte()
//取低位
res[1] = (20000 and 0xFF).toByte()
Kotlin中位操作总结如下:
shl(bits) – 左移位 (Java’s <<)
shr(bits) – 右移位 (Java’s >>)
ushr(bits) – 无符号右移位 (Java’s >>>)
and(bits) – 与 &
or(bits) – 或 ||
xor(bits) – 异或
inv() – 反向
注意:kotlin中,位运算只能是Int 和 Long类型,所以大部分我们都需要通过toInt()或者toLong()方法转为Int或Long类型