我正在尝试从 DWORDLONG 类型(在 WIN32 中定义为无符号 64 位 int)返回类型 jlong(在 JNI 中定义为有符号的 64 位长值)。
只需键入铸造:
DWORDLONG dwl = 1000000000000;
jlong n = (jlong) dwl;
由于操作未定义,因此更改值。
那么如何将无符号长整数转换为有符号长整数,同时保持与之前相同的数值呢?
更新
看来问题是由于我的测试中出现的指针取消引用错误而发生的。演员并没有改变价值。感谢所有评论/回答的人,至少现在我知道这是一个完全合法的操作。