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
→ Ссылка