I\'m trying to write kotlin code like:
for (byte b : hash)
stringBuilder.append(String.format(\"%02x\", b&0xff));
but I have not
Kolin provides bitwise operator-like infix functions available for Int
and Long
only.
So it's necessary to convert bytes to ints to perform bitwise ops:
val b : Byte = 127
val res = (b.toInt() and 0x0f).toByte() // evaluates to 15
UPDATE: Since Kotlin 1.1 these operations are available directly on Byte.
From bitwiseOperations.kt:
@SinceKotlin("1.1")
public inline infix fun Byte.and(other: Byte): Byte = (this.toInt() and other.toInt()).toByte()
Bitwise "and" of any byte-value and 0xff will always return the original value.
It is simple to see this if you draw the bits in a diagram:
00101010 42
11111111 and 0xff
--------
00101010 gives 42