Kotlin как собрать Float из UByte?
Kotlin. Есть пакет с принятыми данными, побайтно, лежит в массиве var packet = Array<UByte>(20)
Как сказать компилятору что байты packet[2], packet[3], packet[4] и packet[5] это одно число в формате Float ? Чтобы присвоить его переменной var X: Float =
В си это делалось легко через указатели, котлин только осваиваю.
Ответы (2 шт):
Автор решения: Eugene Krivenja
→ Ссылка
Вам поможет java.nio.ByteBuffer
, тест навскидку
val data = Array(20) { _ -> 0x00.toUByte() }
val source = data.copyOfRange(2, 6).toUByteArray()
val buffer = ByteBuffer.allocate(4)
.put(source.toByteArray()) // BigEndian по умолчанию
println(buffer.getFloat(0)) // 0.0
Автор решения: Slog
→ Ссылка
Вот ответ:
val bytes = byteArrayOf(1, 2, 3, 4)
val buffer = ByteBuffer.wrap(bytes)
val float1 = buffer.getFloat() // Uses current position and increments it by 4
val float2 = buffer.getFloat(0) // Uses specified position