我正在使用QueryPerformanceCounter();
来获取一个数字,以用作文件名中包含的唯一时间戳。
LARGE_INTEGER performanceCount;
QueryPerformanceCounter(&performanceCount);
我需要将类型为performanceCount.HighPart
的{{1}} LONG
和类型为performanceCount.LowPart
的{{1}}编码为base64字符串。然后连接它们并将它们存储在DWORD
变量中。
我怎样才能做到这一点?
答案 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