a nivel de bit y no funciona con bytes en kotlin

Estoy tratando de escribir el código de kotlin como:

for (byte b : hash) stringBuilder.append(String.format("%02x", b&0xff)); 

pero no tengo nada que ver con el "&". Estoy tratando de usar "b y 0xff" pero no funciona. El "y" bit a bit parece funcionar en Int, no en byte.

 java.lang.String.format("%02x", (b and 0xff)) 

esta bien usar

 1 and 0xff 

Kolin proporciona funciones de infijo de tipo bit operador disponibles para Int y Long solamente.

Por lo tanto, es necesario convertir bytes en ints para realizar operaciones en modo bit:

 val b : Byte = 127 val res = (b.toInt() and 0x0f).toByte() // evaluates to 15 

ACTUALIZACIÓN: desde Kotlin 1.1 estas operaciones están disponibles directamente en Byte.

De bitwiseOperations.kt :

 @SinceKotlin("1.1") public inline infix fun Byte.and(other: Byte): Byte = (this.toInt() and other.toInt()).toByte() 

Bitwise "y" de cualquier valor de byte y 0xff siempre devolverá el valor original.

Es simple ver esto si dibujas los bits en un diagtwig:

 00101010 42 11111111 and 0xff -------- 00101010 gives 42