将LARGE_INTEGER转换为base 64字符串

时间:2012-11-27 22:09:50

标签: c++

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

LARGE_INTEGER performanceCount;
QueryPerformanceCounter(&performanceCount);

我需要将类型为performanceCount.HighPart的{​​{1}} LONG和类型为performanceCount.LowPart的{​​{1}}编码为base64字符串。然后连接它们并将它们存储在DWORD变量中。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

为了避免使用带有文件名(see this question)的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