我试图写下像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
答案 0 :(得分:27)
Kolin仅为Int
和Long
提供类似运算符的infix functions。
因此有必要将字节转换为int来执行按位操作:
val b : Byte = 127
val res = (b.toInt() and 0x0f).toByte() // evaluates to 15
<强>更新强> 从Kotlin 1.1开始,这些操作可直接在Byte上使用。
来自 bitwiseOperations.kt :
@SinceKotlin("1.1")
public inline infix fun Byte.and(other: Byte): Byte = (this.toInt() and other.toInt()).toByte()
答案 1 :(得分:5)
任何字节值和0xff的按位“和”将始终返回原始值。
如果您在图中绘制位,很容易看到这一点:
IMG_LoadTexture