0

プロジェクトで JNA を使用して、Windows の C 関数から長い値を受け取ります。

メソッドは次のとおりです。

long identifier();

64 ビットで仮想マシン (Windows 64 の場合は JRE 1.7.0_05) を使用する場合、64 ビット用にコンパイルされた dll を使用すると、次の数値が得られます。

identifier = 528913750 

仮想マシン (Windows 32 の場合は JRE 1.7.0_07) を 32 ビット用にコンパイルされた dll で使用すると、次の数値が得られます。

identifier = 369896101206

右が1番!(64ビット用)

それらのバイナリ値は次のとおりです。

64 bits =           11111100001101001010101010110
32 bits = 101011000011111100001101001010101010110

32ビットの最初にこの1010110を取得する理由を誰かが知っていますか?

4

1 に答える 1

0

ウィキペディアには、JNAのネイティブタイプのマッピングを説明する表があります。longへの直接変換は、64ビットでのみサポートされます。それ以外の場合は、NativeLongを使用する必要があります。

この記事では、ネイティブロングをマップする方法についても説明します。

于 2012-09-25T14:14:44.700 に答える