连接两个Base64编码的字符串

时间:2014-09-20 08:46:31

标签: ios ios7 encoding base64

我想解码两个Base64编码的字符串并将它们组合成一个128位字符串。我能够解码Base64编码的字符串。有人可以指导我如何组合这两个解码的字符串吗?

这是我用来解码两个编码字符串的代码。

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

感谢。

1 个答案:

答案 0 :(得分:0)

Base 64是一个静态大小的八位字节/字节编码为字符/文本:一个字节的6位表示为可打印的ASCII字符。因此名称:2 ^ 6 = 64,它使用64个字符的字母表来编码二进制数据(+加上一个不包含编码位的分隔符:'=')。

UTF-8 - 用于示例代码 - 另一方面是字符编码。它用于以八位字节编码字符。 所以字符编码反过来。你实际做的是从字节中解码字符。 UTF-8不使用128位值,也不是静态大小;多个字节可用于表示一个字符。遇到没有组合成有效字符编码的八位字节或八位字节时,它可能会失败。

no such thing as base 128 encoding。如果你遇到困难,请考虑一下你想要完成什么,并提出我们可以解码的新问题。


GUESSED ANSWER:

Base 64编码将为每6个字节输出64位(8字节)的ASCII文本。因此,如果您需要128位(16字节)的编码输出,则只需输入12个字节。由于基本64编码在每个4字符边界重新开始(4 * 8 = 32位编码,每8位字符代表6位,4 * 6 = 24位数据,24位是3字节 - >每4个字符string只保存3个字节的输入),你可以简单地连接两个base 64字符串而无需解码。