Можете ли вы рассказать мне, как я могу это сделать? Есть ли какой-нибудь блок Freepascal, который может сделать это для меня? Мне нужно, чтобы моя программа могла хранить двоичные данные в XML-формате fileformat.Как закодировать файл любого типа в строку 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? –
Да, он будет работать с любой формой потока. На самом деле это смысл создания потока. –
Btw Начиная с версии 2.4.4, в этом блоке также есть несколько простых вспомогательных функций, которые упрощают использование обтекания потоков. –
- 1. Декодировать, а затем закодировать неизвестный класс с помощью NSKeyedArchiver?
- 2. на quickjson, закодировать только число в строку, затем декодировать его
- 3. Кодировать url в base64, а затем декодировать его
- 4. Декодировать закодированный javascript, редактировать, а затем снова закодировать
- 5. Как закодировать PHP файл с base64
- 6. Как декодировать файл base64 в двоичный файл на Python?
- 7. Как декодировать строку base64 в файл без сохранения
- 8. javascript Как декодировать файл, сохраненный как base64, и загрузить его
- 9. Как кодировать и декодировать загруженный файл, используя файл типа ввода
- 10. Как закодировать номер в строке и затем декодировать его?
- 11. Как декодировать строку Base64?
- 12. Декодировать base64 изображение и сохранить его на веб-сервере - получить то же самое и снова закодировать
- 13. Декодировать base64 в двоичный файл в swift
- 14. Как преобразовать изображение Base64 в файл типа
- 15. Как декодировать строку с Base64 в iPhone
- 16. Как я могу закодировать строку в base64 с помощью meteor
- 17. Как записать файл любого типа в python и преобразовать его в строку
- 18. Как закодировать html-страницы, которые не могли его декодировать снова
- 19. Как декодировать файл изображения с помощью php
- 20. Запись изображения с кодировкой Base64 в файл
- 21. Как преобразовать Base64 Файл в фактический файл/исходный файл в javascript и загрузить его клиенту
- 22. Пакетный файл для поиска строку, а затем редактировать его
- 23. Как декодировать строку в определенной кодировке, а затем закодировать ее в UTF-8?
- 24. Как декодировать двоичный контент Base64 как строку, а затем записать его на HDD в виде двоичного содержимого в WSH
- 25. Python выполнить файл, а затем удалить его
- 26. Декодировать MP3, затем увеличить громкость звука, а затем закодировать новый звук
- 27. Получить изображение с помощью jQuery.ajax() и декодировать его в base64
- 28. Как закодировать строку base64 в swift
- 29. Как отправить (закодировать) изображение PNG с помощью Restlet и получить (декодировать) его с помощью jQuery?
- 30. Как закодировать строку Dart в base64?
Возможный дубликат [binary-to-base64-delphi] (http: // stackoverflow. com/questions/5795263/binary-to-base64-delphi/5795440 # 5795440) –
@Uwe Этот модуль доступен в FPC? –
@ Давид, так как у меня нет Лазаря, я не знаю. Вот почему я написал _possible_. –