1

QueryPerformanceCounter();用来获取一个数字,用作要包含在文件名中的唯一时间戳。

LARGE_INTEGER performanceCount;
QueryPerformanceCounter(&performanceCount);

我需要将performanceCount.HighPart哪个类型LONGperformanceCount.LowPart哪个类型编码DWORD为 base64 字符串。然后连接它们并将它们存储在一个wstring变量中。

我怎样才能做到这一点?

4

1 回答 1

1

为避免将 base64-chars 与文件名一起使用时出现问题(请参阅此问题),使用 base16 的有限字符集可能会更好。即使在 32 位编译中,MS 仍然支持 LARGE_INTEGER 的 QuadPart 成员所以我们正在使用它。

编辑:根据评论建议,这样做的主要方法应该是使用字符串流:

#include <sstream>
#include <iomanip>

std::wstring LargeIntToString(const LARGE_INTEGER& li)
{
    std::wstringstream wss;
    wss << hex << setw(16) << setfill(L'0') << li.QuadPart;
    return wss.str();
}


int main()
{
    LARGE_INTEGER li;
    QueryPerformanceCounter(&li);

    wcout << LargeIntToString(li) << endl;
    return 0;
} 

输出(无论如何,当时我在我的机器上运行它)

00000041f40cdd33
于 2012-11-28T00:06:25.997 回答