Из этого сообщения http://www.cocoabob.net/?p=7
Я использую кодировщик и декодер base64, чтобы поместить двоичные данные изображений в данные XML, а затем передать нетекстовые данные в виде текстовых данных между сервером и клиентом.
Вот пример в моем проекте iPhone.
base64.zip
Загрузите эти два файла и импортируйте их в свой проект и включите файл заголовка вфайл вашего класса.
(Спасибо Джонатану Уайту, который написал его 18 марта 2003 г.)
В заголовочном файле base64 есть четыре метода.
extern size_t EstimateBas64EncodedDataSize(size_t inDataSize);
extern size_t EstimateBas64DecodedDataSize(size_t inDataSize);
extern bool Base64EncodeData(const void *inInputData, size_t inInputDataSize, char *outOutputData, size_t *ioOutputDataSize, BOOL wrapped);
extern bool Base64DecodeData(const void *inInputData, size_t inInputDataSize, void *ioOutputData, size_t *ioOutputDataSize)
Вот использование декодирования строковых данных.
NSString *stringValue = /*the UTF8 string parsed from xml data*/
Byte inputData[[stringValue lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];//prepare a Byte[]
[[stringValue dataUsingEncoding:NSUTF8StringEncoding] getBytes:inputData];//get the pointer of the data
size_t inputDataSize = (size_t)[stringValue length];
size_t outputDataSize = EstimateBas64DecodedDataSize(inputDataSize);//calculate the decoded data size
Byte outputData[outputDataSize];//prepare a Byte[] for the decoded data
Base64DecodeData(inputData, inputDataSize, outputData, &outputDataSize);//decode the data
NSData *theData = [[NSData alloc] initWithBytes:outputData length:outputDataSize];//create a NSData object from the decoded data