美文网首页加密
iOS 中的 Base64 编码

iOS 中的 Base64 编码

作者: Yasic | 来源:发表于2019-01-02 10:11 被阅读13次

    Base64 是一种基于 64 个可打印字符来表示二进制数据编码方式,广泛运用在处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据。

    通过 Base64 编码后的数据比原始数据略长,为原来的 4/3,原因是 Base64 是将三个字节拆分成 4 个 6bit 段进行编码。

    Base64 编码的具体步骤如下

    • 对于原始数据,以每 3 个 8bit 为一组,获得 24bit
    • 将 24bit 划分为 4 组,每组 6bit
    • 将每组 bit 的高位补充 2 个 0,获得 4 个 8bit
    • 将 4 个 8bit 转换为 10 进制,对照 Base64 参照表进行编码替换
    Base64编码参照表

    这里需要注意的点

    • 对于 URL 而言,Base64 参照表的 "+" 和 "/" 是保留字,不会进行 URL 编码,这样会对解析 URL 产生错误,因此需要先将它们替换成诸如 "-_" 等字符,然后参与 URL 编码
    • 由于编码的是 8bit 字符,因此对于超过 8bit 的字符,如中文字符等,需要进行 UTF8 编码后再进行 Base64 编码
    • 字符串末尾有时不足 3 个字符,需要补充 "=" 进行占位,具体来说
      • 对于末尾只有 1 个字符的情况,转换为 8bit 二进制数据后,末尾补 0,填充至 12bit,转换为 2 个 Base64 编码字符,然后再补充 2 个 "=" 作为结束符
      • 对于末尾只有 2 个字符的情况,转换为 8bit 二进制数据后,末尾补 0,填充至 18bit,转换为 3 个 Base64 编码字符,然后再补充 1 个 "=" 作为结束符
    Basse64末尾补0

    iOS 中的 Base64 编码与解码如下所示

        NSString *target = @"TEST";
        NSData *data = [target dataUsingEncoding:NSUTF8StringEncoding];
        NSString *base64Str = [data base64EncodedStringWithOptions:nil];
        NSString *base64DecodeStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    

    相关文章

      网友评论

        本文标题:iOS 中的 Base64 编码

        本文链接:https://www.haomeiwen.com/subject/ecmalqtx.html