Recover most and least significant bits in a Byte

import kotlin.experimental.and

fun main() {
    //sampleStart
    val b: Byte = "01001100".toByte(2)

    val msb: Byte = b.toInt().ushr(4).toByte()
    val lsb: Byte = b and 15
    //sampleEnd
    
    println(b.toString(2).padStart(8, '0'))
    println(msb.toString(2).padStart(4, '0'))
    println(lsb.toString(2).padStart(4, '0').padStart(8))
}

Also, your example byte (10111100) cannot be represented as a Byte:

fun main() {
    //sampleStart
    val b: Byte = "10111100".toByte(2) // 👎 Value out of range.
    //sampleEnd
}

You’ll need to use a UByte:

fun main() {
    //sampleStart
    val b: UByte = "10111100".toUByte(2) // 👍 

    val msb: Byte = b.toInt().ushr(4).toByte()
    val lsb: Byte = (b and 15u).toByte()
    //sampleEnd

    println(b.toString(2).padStart(8, '0'))
    println(msb.toString(2).padStart(4, '0'))
    println(lsb.toString(2).padStart(4, '0').padStart(8))
}
1 Like