bitwise & doesn't work with bytes in kotlin

前端 未结 2 1099
渐次进展
渐次进展 2020-12-16 10:33

I\'m trying to write kotlin code like:

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

but I have not

相关标签:
2条回答
  • 2020-12-16 11:06

    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()
    
    0 讨论(0)
  • 2020-12-16 11:22

    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
    
    0 讨论(0)
提交回复
热议问题