2個の32ビット整数から1個の64ビット整数を作成する
2個の32ビット整数から1個の64ビット整数を作成するには、LARGE_INTEGER、ULARGE_INTEGER構造体を使います。また、1個の64ビット整数から2個の32ビット整数への分解にも、同構造体を使うことができます。例えば、次のようにします。
//---------------------------------------------------------------------------
LARGE_INTEGER __fastcall MakeLargeInteger(DWORD ALowPart, LONG AHighPart)
{
LARGE_INTEGER li;
li.LowPart = ALowPart;
li.HighPart = AHighPart;
return li;
}
//---------------------------------------------------------------------------
LARGE_INTEGER __fastcall MakeLargeInteger(LONGLONG AQuadPart)
{
LARGE_INTEGER li;
li.QuadPart = AQuadPart;
return li;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::Test1()
{
const int low = 0x11111111;
const int high = 0xFFFFFFFF;
const __int64 quad = MakeLargeInteger(low, high).QuadPart;
ShowResult(low, high, quad);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Test2()
{
const __int64 quad = 0x0123456789ABCDEF;
const int low = MakeLargeInteger(quad).LowPart;
const int high = MakeLargeInteger(quad).HighPart;
ShowResult(low, high, quad);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ShowResult(int ALow, int AHigh, __int64 AQuad)
{
ShowMessage(AnsiString().sprintf(
"Low: 0x%X\r\n"
"High: 0x%X\r\n"
"Quad: 0x%LX",
ALow, AHigh, AQuad));
}
//---------------------------------------------------------------------------
最終更新: 2008-07-06
戻る