Kotlin ByteArray 元素大小范围

文章目录

    今天在用 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式