2014-09-20 4 views
-1

Я хочу декодировать две закодированные строки Base64 и объединить их, чтобы сделать одну 128-битную строку. Я могу декодировать закодированные строки Base64. Может ли кто-нибудь объяснить мне, как объединить эти две декодированные строки?Объединить две закодированные строки Base64

Это код, который я использовал для декодирования двух закодированных строк.

NSData *decodedData_contentKey = [[NSData alloc] initWithBase64EncodedString:str_content options:0]; 
NSString *decodedString_contentKey = [[NSString alloc] initWithData:decodedData_contentKey encoding:NSUTF8StringEncoding]; 
NSLog(@"%@", decodedString_contentKey); 

Спасибо.

+2

"128-разрядная строка" не имеет смысла. В чем проблема? Где тестовые данные и неправильные результаты? Где код для объединения строк? Если вы просто хотите объединить две строки, используйте метод 'NSString':' stringByAppendingString: '. – zaph

+0

Обратите внимание, что кодировка! = Шифрование, измененные теги, чтобы отразить это. –

ответ

0

Base 64 представляет собой кодировку по октетам/байтам статического размера в символы/текст: 6 бит байта представлены как печатный символ ASCII. Следовательно, имя: 2^6 = 64, для кодирования двоичных данных используется символ из 64 символов (+ плюс разделительный символ: '=', который не содержит закодированных битов).

UTF-8 - используется в вашем примере кода - с другой стороны, это кодировка символов. Он используется для кодирования символов в октетах. Так кодировка символов работает наоборот. Что вы на самом деле делаете, это декодировать символы из байтов. UTF-8 не использует 128-битные значения и не статически размер; для представления одного символа можно использовать несколько байтов. Это, скорее всего, не удастся, если встретится с октетом или октетами, которые не объединяются в действительную кодировку символов.

no such thing as base 128 encoding. Пожалуйста, подумайте о том, что вы пытаетесь выполнить, и задайте новый вопрос, который мы можем декодировать, если вы застряли.


Угадал ОТВЕТ:

База 64 кодирования будет выдавать 64 бита (8 байт) от ASCII текста для каждого из 6 байт. Поэтому, если вы хотите получить 128-битный (16 байт) вывод кодировки, вам просто нужно ввести 12 байтов. Однако, когда базовое кодирование 64 перезапускается на каждой границе 4 символов (4 * 8 = 32 бита кодирования, каждый 8-битный символ представляет 6 бит, 4 * 6 = 24 бита данных, 24 бита - 3 байта -> каждая строка из 4 символов содержит ровно 3 байта ввода), вы можете просто объединить две базовые 64 строки без декодирования.

Смежные вопросы