unsigned __int64から、上位DWORD、下位DWORDを取り出すマクロ
注意
コード中にも書きましたが、符号なし__int64に対して使うと、値が負のときは、
バグの原因になるかもしれません。
コード
/* QWORDな値から、上位/下位DWORDを取り出す。 * 符号なしの__int64に対して使うときは、おかしなことになるかもしれない。 * (一旦、-1をかけて正の数にしてからのほうがいいかも。) */ #define HIDWORD(x) (((x)>>32) & 0xffffffff) #define LODWORD(x) ((x) & 0xffffffff)
ひとこと
HIDWORDの方、& 0xffffffff って必要なのかな・・・。
とりあえず、下記のサイトに載っていたまま、残しておきました。
参考URL
ほぼパクりました。(一応、xって所を(x)に書き直しただけ)
http://www.experts-exchange.com/Programming/Languages/CPP/Q_20534471.html
DWORD値2つから、QWORDを作る
DWORDは32Bits、QWORDは64Bitsってことで、ここはひとつよろしくお願いします。
typedef unsigned __int64 __uint64; // QWORDと同じってことで。 __uint64 MakeQWord( DWORD hi, DWORD low) { return ((__uint64)hi << 32) | low; }