Embarcadero: 如何使用 TBase64Encoding's EncodeBytesToString 方法

Embarcadero: How to use TBase64Encoding's EncodeBytesToString method

本文关键字:EncodeBytesToString 方法 何使用 TBase64Encoding Embarcadero      更新时间:2023-10-16

我正在尝试使用TBase64Encoding类的EncodeBytesToString方法将字节数组转换为base64编码的String。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。我在这里错过了什么?

试试这个:

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

System.NetEncoding.TNetEncoding提供静态属性Base64来检索用于base64编码的TNetEncoding的实例。

所以这也会起作用:

String __fastcall BytesToBase64(TByteDynArray _ArrayIn)
{
    return TNetEncoding::Base64->EncodeBytesToString(&_ArrayIn[0], _ArrayIn.High);
}
相关文章:
  • 没有找到相关文章