我正在编写 JNI 代码并遇到需要将 uint64_t 转换为 jlong 的情况,这是我目前将 uint64_t 转换为 jlong 的方法:
jlong uint64_t_to_jlong (uint64_t value) {
if (value > std::numeric_limits<jlong>::max()) {
return std::numeric_limits<jlong>::max();
}
return static_cast<jlong>(value);
}
这显然不是一个完美的方法,因为它在value > std::numeric_limits<jlong>::max()
. 但是,直接返回static_cast<jlong>(value)
对我来说也不是一个好方法,因为在 Java 方面我们将收到负值。
我可以知道是否有更好的方法可以顺利正确地处理所有情况?