按位&不适用于kotlin中的字节

我正在努力写下kotlin代码:

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

但是我与“&”无关。 我试图使用“b和0xff”,但它不起作用。 按位“和”似乎工作在INT,而不是字节。

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

可以使用

 1 and 0xff 

按位“和”任何字节值和0xff将始终返回原始值。

如果您在图中绘制位,很容易看到这一点:

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

Kolin只提供了IntLong按位运算符类中缀函数 。

所以有必要将字节转换为整数来执行按位操作:

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

更新:从Kotlin 1.1这些操作直接可用字节。

来自bitwiseOperations.kt

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

当你有一个多行表达式时,你可以这样做:

 decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE .or( View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) .or( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) .or( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) .or( View.SYSTEM_UI_FLAG_FULLSCREEN) .or( View.SYSTEM_UI_FLAG_IMMERSIVE) 
Interesting Posts