Kotlin ByteArray 元素大小范围

发布时间: 2023-08-04 13:06:11 作者: 大象笔记

今天在用 Kotlin 写一段字节数据的 BCC 校验时提示错误信息。代码是:

var data = byteArrayOf(0x00, 0x06, 0xA2)

报错信息:

The integer literal does not conform to the expected type Byte

Android Studio 中建议的写法是:

0xA2.toByte()

var data = byteArrayOf(0x00, 0x06, 0xA2.toByte())

为何 0xA2 不在 Byte 的范围之内

Byte 的范围不是 0~255 么?

确实不是,byte 类型的取值范围是 -128 到 127。

用 Windows 自带的程序员计算器,可以算得 0xA2 对应数字为 162,超出了 127 的上限。

测试

实际使用时,需要注意,不要用反了。。。

// newData 为一个 ByteArray,最后一个元素是 0xAB.toByte()
assertEquals(newData[newData.size - 1].toInt(), 0xAB)
// java.lang.AssertionError: expected:<-85> but was:<171>

正确的测试方法:

assertEquals(newData[newData.size - 1], 0xAB.toByte())
我是一名山东烟台的开发者,联系作者