如何在Groovy中将字符串解码为32位无符号网络字节顺序整数?
在Ruby中,可以使用"this is string".unpack('N')
实现。
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
在@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()