2016-04-08 17 views
2

EncodeBytesToStringメソッドのTBase64Encodingクラスを使用して、バイトの配列をbase64でエンコードされたStringに変換しようとしています。 EncodeBytesToString状態のdocumentationEmbarcadero:TBase64EncodingのEncodeBytesToStringメソッドの使用方法

"Returns a string with the input array of bytes encoded up to the specified number of bytes."

はしたがって、私はそうのような私のバイト配列をエンコードしようとした:

TFile * File = new TFile(); 

TBytes Bytes = File->ReadAllBytes("D:\\Sample.pdf"); 

TBase64Encoding * Encoder = new TBase64Encoding(); 

String EncodedBytes = Encoder->EncodeBytesToString(Bytes, Bytes.Length); 

はしかし、私は次のエラーを取得する:

E2285 Could not find a match for 'TNetEncoding::EncodeBytesToString(TByteDynArray,int)'

私はドキュメントにはTBytesオブジェクトとオブジェクトを渡す必要があると思われるので、混乱しています。 0をこの関数に追加します。私はここで何が欠けていますか?

答えて

3

これを試してみてください:

//------------------------------------------------------------------------------ 
String __fastcall BytesToBase64(TByteDynArray _ArrayIn) 
{ 
    TBase64Encoding * Encoding = new TBase64Encoding(64, '\n'); 
    String Result = Encoding->EncodeBytesToString(&_ArrayIn[0], _ArrayIn.High); 
    delete Encoding; 
    return Result; 
} 
//------------------------------------------------------------------------------ 
TByteDynArray __fastcall Base64ToBytes(String _64String) 
{ 
    TByteDynArray My64Bytes = _64String.BytesOf(); 
    return TNetEncoding::Base64->Decode(&My64Bytes[0], My64Bytes.High); 
} 
//------------------------------------------------------------------------------