Java有按位或运算符|
和按位与运算符&
:
int a = 5 | 10;
int b = 5 & 10;
它们似乎在 Kotlin 中无法正常工作:
val a = 5 | 10;
val b = 5 & 10;
我该如何在Kotlin中使用Java的位运算符?
Java有按位或运算符|
和按位与运算符&
:
int a = 5 | 10;
int b = 5 & 10;
它们似乎在 Kotlin 中无法正常工作:
val a = 5 | 10;
val b = 5 & 10;
我该如何在Kotlin中使用Java的位运算符?
你已经为它们命名了函数。
来自Kotlin文档
按位运算由可以以中缀形式调用的函数表示。它们只能应用于
Int
和Long
。
例如:
val x = (1 shl 2) and 0x000FF000
这里是位运算的完整列表:
shl(bits) – signed shift left (Java's <<)
shr(bits) – signed shift right (Java's >>)
ushr(bits) – unsigned shift right (Java's >>>)
and(bits) – bitwise and
or(bits) – bitwise or
xor(bits) – bitwise xor
inv() – bitwise inversion
5.inv()
这样使用,而不像其他运算符一样用作中缀操作符。 - xjclif (condition1 or condition2) and condition3: do this
这样的表达式。这种方式更直观,自然而易于理解。 - Anchith Acharya你可以在 Kotlin 中做到这一点
val a = 5 or 10;
val b = 5 and 10;
以下是您可以使用的操作列表
shl(bits) – signed shift left (Java's <<)
shr(bits) – signed shift right (Java's >>)
ushr(bits) – unsigned shift right (Java's >>>)
and(bits) – bitwise and
or(bits) – bitwise or
xor(bits) – bitwise xor
inv() – bitwise inversion
另一个例子:
Java:
byte dataHigh = (byte) ((data[byteOffset] & 0xF0) >> 4);
Kotlin
val d = (data[byteOffset] and 0xF0.toByte())
val dataHigh = (d.toInt() shr 4).toByte()
|=
是什么意思? - IgorGanapolsky