在Java中转换有符号整数常量

时间:2012-10-23 15:42:36

标签: java

简单的问题,我有一些自定义的java,允许有32位的HW变量。 我想将这样的变量设置为一个恒定的32位值,但是,此命令失败 在以下场景中:

HWINTVar a = const.var(toHWint(32), 0xf1234567);

但适用于这种情况:

HWINTVar a = const.var(toHWint(32), 0x11234567);

第一种情况中的错误消息是在常量值中可能丢失临界位数,原因是我传递给此方法的常量是有符号的。有一种简单的方法可以告诉我如何将这个常量值解释为无符号值?我试过了:

 HWINTVar a = const.var(toHWint(32), (unsigned int) 0xf1234567);
 HWINTVar a = const.var(toHWint(32), (unsigned integer) 0xf1234567);

但是这个显而易见的工作不能在Java中工作,因为它不支持无符号数据类型。知道如何做到这一点?

干杯!

2 个答案:

答案 0 :(得分:0)

正确表示常量的唯一方法是long字面值,即0xf1234567L

假设您有能力,请更改const.var的定义,使其第二个参数需要long,并提取底部的32位以将其放入HWINTVar。< / p>

答案 1 :(得分:0)

感谢您的所有反馈,它的工作原理是将常数存储为长,然后再存储 使用掩码为低32位!

HWINTVar a = const.var(toHWint(32),0xf1234567l&amp; 0xfffffff);