2014-09-20 34 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 2014-09-21 07:22:44

+0

請注意,編碼!=加密,改變標籤以反映這一點。 – 2014-09-21 12:48:57

回答

0

基地64是一個靜態大小的字節/字節字節/文本的編碼:一個字節的6位表示爲可打印的ASCII字符。因此,名稱:2^6 = 64,它使用一個由64個字符組成的字母表對二進制數據進行編碼(+加上不包含編碼位的分隔符:'=')。

UTF-8 - 用於您的示例代碼 - 另一方面是字符編碼。它用於以八位字節編碼字符。 所以字符編碼是相反的。你實際上在做什麼是解碼從字節回來的字符。 UTF-8不使用128位值,也不是靜態大小;可以使用多個字節來表示一個字符。如果遇到八位字節或八位字節不合併成有效字符編碼,它可能會失敗。

no such thing as base 128 encoding。請想想你想完成什麼,並提出一個新問題,如果你卡住了,我們我們可以解碼。


猜測答案:

Base 64編碼將輸出爲每個6個字節ASCII文本的64位(8個字節)。因此,如果你想要128位(16字節)的編碼輸出,你只需要輸入12個字節。然而,由於基本64編碼在每個4個字符的邊界重新開始(4 * 8 = 32位編碼,每個8位字符代表6位,4 * 6 = 24位數據,24位是3個字節 - >每個4個字符的字符串持有正好3個字節的輸入),您可以簡單地連接兩個基本64字符串而無需解碼。