Kotlin ByteArray 元素大小范围

更新日期: 2023-08-04 阅读次数: 1666 字数: 193 分类: Kotlin

今天在用 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 聊聊, 查看更多联系方式