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

戻る