简单的问题,我有一些自定义的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中工作,因为它不支持无符号数据类型。知道如何做到这一点?
干杯!
答案 0 :(得分:0)
正确表示常量的唯一方法是long
字面值,即0xf1234567L
假设您有能力,请更改const.var
的定义,使其第二个参数需要long
,并提取底部的32位以将其放入HWINTVar
。< / p>
答案 1 :(得分:0)
感谢您的所有反馈,它的工作原理是将常数存储为长,然后再存储 使用掩码为低32位!
HWINTVar a = const.var(toHWint(32),0xf1234567l&amp; 0xfffffff);