質問: Visual C ++で10GBのBYTE配列を16進形式の標準文字列に変換する最速の方法は何ですか?
私がしていること:私はstd :: fread(...)を使用して非常に大きなファイルを大きなバッファーに読み込み、それを16進形式にフォーマットしてから、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 );
}