1

簡単な質問ですが、私は 32 ビットの HW 変数を持つことができるカスタマイズされた Java をいくつか持っています。このような変数に定数の 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

すべてのフィードバックに感謝します。定数をできるだけ長く保存してから、下位 32 ビットにマスクを使用することで機能します。

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

于 2012-10-23T16:08:50.007 に答える
0

その定数を正しく表現する唯一の方法は、longリテラルとしてです。0xf1234567L

const.var可能であれば、2 番目のパラメーターとして を受け取るように の定義を変更しlong、下位 32 ビットを抽出してHWINTVar.

于 2012-10-23T16:02:19.620 に答える