我想从Kotlin中的两个字节创建一个UInt16值.这是我想出来的:

fun BytesToUInt16(b1 : Byte, b2 : Byte) : UInt {
  val uInt16Value = ((b1.toUShort() shl 8) or (b2.toUShort())
  return uInt16Value
}

但在Kotlin ,用shl转换UInt16似乎是不可能的. 从两个字节创建UInt16的正确方法是什么?

推荐答案

希望这个能帮上忙!

//BytesToUInt16 
//I have two bytes 
fun bytesToUInt16(byte1: Byte, byte2: Byte): Int {
   return ((byte1.toInt() and 0xFF) shl 8) or (byte2.toInt() and 0xFF)
}

//create a byte
val byte1: Byte = 0b11111111.toByte()
val byte2: Byte = 0b11111111.toByte()
val result = bytesToUInt16(byte1, byte2)
println(result) // 65535

//// 258
val byte3: Byte = 0b00000001.toByte()
val byte4: Byte = 0b00000010.toByte()
val result2 = bytesToUInt16(byte3, byte4)
println(result2) // 258

Kotlin相关问答推荐

直接从SON解析NonEmptyList

Kotlin-删除按钮周围的空格

如何在Spring Boot中注册新的集合工厂

如果不为空,则为 builder 设置一个值 - Kotlin

Mixin 在 Jackson 中添加 defaultImpl 不起作用

如何将jooq multiset的结果映射到Hashmap(Java Map)?

在 SplashActivity 中显示的 Firebase 应用内消息.如何在 MainActivity 中显示它?

有没有办法重用 Job 实例?

使用 Hilt 注入 CoroutineWorker

如何从定义它们的类外部调用扩展方法?

将 Firebase 数据快照反序列化为 Kotlin 数据类

Kotlin 中的内联构造函数是什么?

Kotlin中的下划线名称是为什么保留的?

使用Dagger 2提供函数依赖性

TornadoFX 中设置 PrimaryStage 或 Scene 属性的方法

这是 Kotlin 中的错误还是我遗漏了什么?

Kotlin 与 C# 中的标志枚举变量具有相似效果的方式是什么

Lint 错误:可疑的相等判断:在 Object DiffUtilEquals 中未实现 equals()

在多平台子元素中使用kapt

函数引用和lambdas