2

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

「指定されたバイト数までエンコードされたバイトの入力配列を含む文字列を返します。」

したがって、バイト配列を次のようにエンコードしようとしました。

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ドキュメントには、オブジェクトとintをこの関数に渡す必要があると書かれているように見えるので、私は混乱しています。ここで何が欠けていますか?

4

1 に答える 1

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);
}
//------------------------------------------------------------------------------
于 2016-04-08T13:31:03.603 に答える