import kotlin.random.Random import kotlin.text.StringBuilder fun main(args: Array) { for (i in 0 until 1000) { val bitStringBuilder = StringBuilder() for (j in 0 until 8) { bitStringBuilder.append(if (Random.nextBoolean()) '1' else '0') } val method1Result = bin2dec1(bitStringBuilder.toString()) val method2Result = bin2dec2(bitStringBuilder.toString()) println("method 1: $method1Result; method 2: $method2Result") assert(method1Result == method2Result) } } fun bin2dec1(bitString: String): Byte { var b: Byte = 0 for (i in 0 until 8) { b = (b.toInt() shl 1).toByte() // Shift old bits if (bitString[i] == '1') { b = (b.toInt() or 1).toByte() // Set new bit } else { b = (b.toInt() or 0).toByte() // Don't set new bit } } return b } fun bin2dec2(bitString: String): Byte { return if (bitString[0] == '1') { (-(bitString.replace('0', ' ').replace('1', '0').replace(' ', '1').toByte(2) + 1)).toByte() } else { bitString.toByte(2) } }