Embarcadero: 如何使用 TBase64Encoding's EncodeBytesToString 方法
Embarcadero: How to use TBase64Encoding's EncodeBytesToString method
我正在尝试使用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);
}
相关文章:
- 没有找到相关文章