问题:在 Visual C++ 中将 10 GB BYTE 数组转换为十六进制格式的标准字符串的最快方法是什么?
我在做什么:我正在使用 std::fread(...) 将一个非常大的文件读入一个大缓冲区,然后将其格式化为十六进制格式,然后将其转换为 std::string。我希望我说得通。
我目前正在使用这段代码(不是我写的......),速度很慢。
std::string ByteToHexFormatStdStr( __in ::BYTE *ByteArray, __in int ArraySize, __in bool AddSpace )
{
::BYTE Byte = NULL;
const char HexCharacters[ 16 ] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
std::string Return = "";
for( ::UINT Index = 0; Index < ArraySize; ++ Index )
{
Byte = ( ::BYTE )( ByteArray[ Index ] & 0xF0 );
Byte = ( ::BYTE )( Byte >> 4 );
Byte = ( ::BYTE )( Byte & 0x0F );
Return += HexCharacters[ ( int )Byte ];
Byte = ( ::BYTE )( ByteArray[ Index ] & 0x0F );
Return += HexCharacters[ ( int )Byte ];
if( AddSpace ) Return += ' ';
}
return ( Return );
}