你能告訴我我該怎麼做?有沒有可以爲我做這個的Freepascal單元?我需要這樣做,所以我的程序可以將二進制數據存儲在基於XML的文件格式中。如何將任何類型的文件編碼爲base64字符串,然後使用Lazarus/Delphi將其解碼爲文件?
回答
使用base64
單位及其兩個等級TBase64EncodingStream
和TBase64DecodingStream
。
這裏是一個simple example:
program demo;
uses Classes, base64;
var
DecodedStream: TStringStream;
EncodedStream: TStringStream;
Encoder: TBase64EncodingStream;
Output: string;
begin
DecodedStream := TStringStream.Create('Hello World!');
EncodedStream := TStringStream.Create('');
Encoder := TBase64EncodingStream.Create(EncodedStream);
Encoder.CopyFrom(DecodedStream, DecodedStream.Size);
Output := EncodedStream.DataString;
{ Outputs 'SGVsbG8gV29ybGQh' }
WriteLn(Output);
DecodedStream.Free;
EncodedStream.Free;
Encoder.Free;
end.
並且,在opposite direction:
program demo;
uses Classes, base64;
var
DecodedStream: TStringStream;
EncodedStream: TStringStream;
Decoder: TBase64DecodingStream;
Output: string;
begin
EncodedStream := TStringStream.Create('SGVsbG8gV29ybGQh');
DecodedStream := TStringStream.Create('');
Decoder := TBase64DecodingStream.Create(EncodedStream);
DecodedStream.CopyFrom(Decoder, Decoder.Size);
Output := DecodedStream.DataString;
{ Outputs 'Hello World!' }
WriteLn(Output);
DecodedStream.Free;
EncodedStream.Free;
Decoder.Free;
end.
或速記encodestringbase64和decodestringbase64(2.4.4+)用於非流基於使用:
Uses Base64;
var
s : AnsiString;
Begin
s:=EncodeStringBase64('Hello world!');
Writeln('Encoded : ',s);
s:=DecodeStringBase64(s);
Writeln('Decoded again : ',s);
end.
它可以與TFileStream一起使用嗎? – 2012-04-20 09:06:03
是的,它可以處理任何形式的流。這確實是使其基於流的點。 – 2012-04-20 09:44:06
Btw從2.4.4開始,在該單元中還有一些簡單的幫助函數可以實現流封裝以方便使用。 – 2012-04-20 12:22:32
- 1. base64編碼音頻文件並將其作爲字符串發送,然後解碼字符串
- 2. 如何將MP3文件轉換爲Base64編碼的字符串?
- 3. 如何使用GWT將短字符串編碼/解碼爲Base64?
- 4. 如何將HTML文件編碼爲base64?
- 5. 將base64編碼的字符串存儲爲文件
- 6. 將任何字符編碼爲數字/拉丁文並將其解碼回來
- 7. 如何使用boost來將字符串編碼爲base64?
- 8. 編碼/解碼文件爲base64動態
- 9. Base64編碼的字符串到文件
- 10. 將文件轉換爲字符串,然後將其轉換爲一個文件
- 11. SQL Server 2000 - 將base64字符串解碼爲圖像文件或解碼爲文件系統
- 12. 如何將字符串編碼爲唯一的數字並將其解碼
- 13. 如何將Java中Base64編碼的文件解碼爲原始內容?
- 14. 如何將字符串編碼爲Json字符串文本?
- 15. 如何爲Base64解碼文件,並得到MIME類型
- 16. 如何將base64字符串解碼爲ios中的NSString?
- 17. 如何將base64字符串解碼爲XSLT中的HTML內容?
- 18. 將文件和字符串編碼爲二進制文件C#
- 19. 解碼附件編碼爲base64字符串
- 20. 如何在Cocoa中編碼和解碼文件爲Base64/Objective-C
- 21. 如何將java.sql.blob轉換爲java中的base64編碼字符串
- 22. 如何解碼使用base64編碼的圖像字符串
- 23. 如何將uint8數組轉換爲base64編碼字符串?
- 24. 如何使用JavaScript解碼來自base64編碼的文件
- 25. 使用Clojure將base64編碼文件解碼回原始格式
- 26. 如何將xml文件編碼爲xfdl(base64-gzip)?
- 27. 將文件轉換爲字符串,然後重建該字符串並將其重新創建爲文件
- 28. 將base64字符串(png文件)解碼回圖像
- 29. 如何將圖像轉換爲文件中的Base64字符串?
- 30. 如何從base64編碼的字符串創建臨時文件?
[binary-to-base64-delphi](http:// stackoverflow。 com/questions/5795263/binary-to-base64-delphi/5795440#5795440) – 2012-04-20 09:05:04
@Uwe該單元是否可用於FPC? – 2012-04-20 10:27:07
@David,因爲我沒有拉撒路我不知道。這就是爲什麼我寫了_possible_。 – 2012-04-20 12:10:52