1

简单的问题,我有一些自定义的 java 允许有 32 位硬件变量。我想为这样的变量分配一个常量 32 位值,但是,此命令在以下情况下失败:

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

但适用于这种情况:

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

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

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

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

干杯!

4

2 回答 2

0

正确表示该常量的唯一方法是作为long文字,即0xf1234567L

假设您能够,更改 的定义,const.var使其long第二个参数为 a,然后提取底部 32 位以将它们放入您的HWINTVar.

于 2012-10-23T16:02:19.620 回答
0

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

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

于 2012-10-23T16:08:50.007 回答