如何在Groovy中将字符串解码为32位无符号网络字节顺序整数?
在Ruby中,可以使用"this is string".unpack('N')
答案 0 :(得分:3)
您可以使用Java NIO ByteBuffer
类获得与Ruby "string".unpack('N')
等效的版本。考虑以下示例:
import java.nio.ByteBuffer
import java.nio.ByteOrder
final String str = "lorem ipsum dolor sit amet"
final ByteBuffer buffer = ByteBuffer.wrap(str.bytes)
buffer.order(ByteOrder.BIG_ENDIAN)
final int result = buffer.getInt()
println result // 1819243109
这是Ruby的REPL中的"lorem ipsum dolor sit amet".unpack('N')
,用于进行比较-https://repl.it/repls/TeemingIndigoHypotenuse
答案 1 :(得分:1)
以@ szymon-stepniak的答案为基础,这是一种通过元编程将其编写为unpack
函数的方法:
import java.nio.*
String.metaClass.unpack {
def s = delegate
ByteBuffer.wrap(s.bytes).order(ByteOrder.BIG_ENDIAN).int
}
assert 1819243109 == "lorem ipsum dolor sit amet".unpack()