kotlin - kotlin 类型与 shl 运算符不匹配
问题描述
我正在通过蓝牙开发一个小型通信协议,供 arduino 将数据传输到 Android。协议的一部分发送包含行数的标头。我已成功读取计数的 MSB 和 LSB,现在必须将其从 Int 重新组装为 Short 值。我的声明如下:
var iLineCountMSB: Int = 0
var iLineCountLSB: Int = 0
var sLineCountMSB: Short = 0
var sLineCount: Short = 0
我已经从蓝牙插座读取了 MSB 和 LSB。请注意,这些值是 Int,而不是 Byte。我尝试将这两个 Int 重新组合为 Short 的尝试如下:
sLineCount = iLineCountMSB.toShort() shl 8 + iLineCountLSB.toShort()
我还将 MSB Int 值复制到 Short (sLineCountMSB):
sLineCountMSB = iLineCountMSB.toShort()
sLineCount = sLineCountMSB shl 8
我继续收到同样的错误:
-- 导致:: 未解析的引用。由于接收器类型不匹配,以下候选都不适用: public inline infix fun BigInteger.shl(n: Int): BigInteger defined in kotlin
Kotlin 文档将函数定义为:
中缀 fun shl(bitCount: Int): Long
我错了吗?这是否指定“Long”是返回的类型?我似乎可以成功编译的唯一“shl”是 Int = Int shl 8。
解决方案
推荐阅读
- sql-server - 函数 Range.Copyfromrecordset 不显示右列
- azure - Azure-Pipelines Build - 参考 build 中的文件
- android - 如何为连接的 Android 设备设置 localhost(VPN 后面)代理
- r - 如何在 R 中创建具有构造函数和函数的类,如 java 或 c++?
- facebook - 当我通过谷歌标签管理器在我的网站上安装了 2 个像素时,如何分离像素事件?
- javascript - 如何删除第三方 Cookie
- python - 使用 Ctypes 隐藏所有连接的显示器上的所有任务栏和系统托盘
- typescript - 如何在函数中使用spread作为参数?
- vba - VBE 中的“Debug - Step Out”图标错误?
- php - Composer - 请求的包 phpgangsta/googleauthenticator 1.0.1 作为 [dev-master] 存在,但这些被您的约束拒绝