2016-04-08 18 views
2

TBase64Encoding sınıfının EncodeBytesToString yöntemini kullanarak bir bayt dizisini base64 kodlu bir String'e dönüştürmeyi deniyorum. documentationEncodeBytesToString için devletler:Embarcadero: TBase64Encoding'ın EncodeBytesToString yöntemi nasıl kullanılır?

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

Bu nedenle, şöyle benim bayt dizisi kodlamak için teşebbüs:

TFile * File = new TFile(); 

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

TBase64Encoding * Encoder = new TBase64Encoding(); 

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

Ancak, aşağıdaki hatayı alıyorum:

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

ben Belgeler, bir TBytes nesnesini ve birgeçirmem gerektiğini belirttiği için kafam karıştı Bu fonksiyona 0. Burada neyi özlüyorum?

cevap

3

bu deneyin:

//------------------------------------------------------------------------------ 
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); 
} 
//------------------------------------------------------------------------------ 
İlgili konular