今天在用 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())
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式