1

Excel で VB を使用しており、CRC16 ビット計算用のマクロを作成しています。ルックアップ テーブルから 8000 を超えて FFFF までの値を取得すると、負の数値が返されます。次に、この範囲未満の数値は正になり、この範囲 (8000-FFFF) の数値は負の結果になり、変換する必要があることを知りました。私はこれらのようないくつかの機能に出くわしましたが、それらは私の目的を解決しません

正しい結果を得るために、単純な関数を使用して変換を行うことは可能ですか?

HFFFF は long 変数に -1 を与えますが、65535 が必要です。

http://support.microsoft.com/kb/161304にある関数を使用しましたが、HFFFF のような 16 進値を渡すと正しい結果が得られません。

4

1 に答える 1

2

16 進定数は符号付きです。これは実際には VBA 仕様で説明されています: http://msdn.microsoft.com/en-us/library/ee199514.aspx

この問題を回避するには、次の 2 つの方法があります。

1) リテラル小数を使用する

2) &HFFFF& のようなアンパサンド型のヒントを使用する

于 2013-07-22T04:53:22.387 に答える