这是Swift代码中的一行,我想在Kotlin中使用:
// var hash: UInt32 = 0
hash = hash &+ UInt32(bytes[i])
它是按位添加数字,然后忽略溢出。
请参阅Swift语言文档中的“值溢出”:(https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html)
但是,当您特别希望溢出条件截断可用位数时,您可以选择加入此行为,而不是触发错误。Swift提供了三个算术溢出运算符,它们可以选择整数计算的溢出行为。这些运算符都以&开头(&
):
- 溢出添加(
&+
) - 溢流减影(
&-
) - 溢出乘法(
&*
)
Kotlin中的等价物是什么?我在官方文件里没看到。
4条答案
按热度按时间k3bvogb11#
Kotlin不会在整数溢出时引发错误。Kotlin基于JVM,所以它也没有unsigned类型。所以你可以简单地添加这些值:
当然,
Byte
也是在Kotlin中签名的,所以在扩展它时可能需要进行值转换:c3frrgcw2#
没有像这样的操作符,但Kotlin可以做同样的事情:
因此可以创建操作符:
然后这样使用:
qf9go6mv3#
我计划使用我的Kotlin文件中的以下java代码:
bt1cpqcv4#
在我尝试了这么长时间之后,这对我很有效,我试图在与iOS hash =(hash << 5)&+ hash &+ Int(char.asciiValue!)
}