关于编码解码问题,我给大家总结好了,请查收

简介: 关于编码解码问题,我给大家总结好了,请查收

问题


将一个十六进制字符串解码成一个字节字符串或者将一个字节字符串编码成 一个十六进制字符串。


解决方案


如果你只是简单的解码或编码一个十六进制的原始字符串,可以使用  binascii 模块

例如:


>>> s = b'hello'>>> import binascii>>> h = binascii.b2a_hex(s)>>> hb'68656c6c6f'>>> binascii.a2b_hex(h)b'hello'>>>


类似的功能同样可以在 base64 模块中找到。例如:

    >>> import base64
    >>> h = base64.b16encode(s)
    >>> h
    b'68656C6C6F'
    >>> base64.b16decode(h)
    b'hello'
    >>>


    结论

    大部分情况下,通过使用上述的函数来转换十六进制是很简单的。上面两种技术的主要不同在于大小写的处理。函数 base64.b16decode() 和 base64.b16encode() 只能操作大写形式的十六进制字母binascii 模块中的函数大小写都能处理

    还有一点需要注意的是编码函数所产生的输出总是一个字节字符串。如果想强制 以 Unicode 形式输出,你需要增加一个额外的界面步骤。

    例如:

      >>> h = base64.b16encode(s)
      >>> print(h)
      b'68656C6C6F'
      >>> print(h.decode('ascii'))
      68656C6C6F
      >>>
      

      在解码十六进制数时,函数 b16decode() 和 a2b_hex() 可以接受字节或 unicode 字符串。但是,unicode 字符串必须仅仅只包含 ASCII 编码的十六进制数。



      问题

      需要使用 Base64 格式解码或编码二进制数据。


      解决方案base64 模块中有两个函数 b64encode() and b64decode() 可以帮你解决这个问题。

      例如;

        >>> s = b'hello'
        >>> import base64
        >>> a = base64.b64encode(s)
        >>> a
        b'aGVsbG8='
        >>> base64.b64decode(a)
        b'hello'
        >>>


        结论

        Base64 编码仅仅用于面向字节的数据比如字节字符串和字节数组。此外,编码处 理的输出结果总是一个字节字符串。如果你想混合使用 Base64 编码的数据和 Unicode 文本,你必须添加一个额外的解码步骤。

        例如:

          >>> a = base64.b64encode(s).decode('ascii')
          >>> a
          'aGVsbG8='
          >>>

          当解码 Base64 的时候,字节字符串和 Unicode 文本都可以作为参数。但是,Unicode 字符串只能包含 ASCII 字符。

          相关文章
          |
          9月前
          钉钉回传中文信息乱码怎么处理?
          钉钉回传中文信息乱码怎么处理?
          434 0
          |
          3天前
          |
          移动开发 Python HTML5
          Python办公自动化【发送普通邮件、发送HTML邮件、发送附件邮件-smtplib、批量发送邮件-smtplib、发送邮件-zmail】(八)-全面详解(学习总结---从入门到深化)
          Python办公自动化【发送普通邮件、发送HTML邮件、发送附件邮件-smtplib、批量发送邮件-smtplib、发送邮件-zmail】(八)-全面详解(学习总结---从入门到深化)
          55 0
          |
          存储 关系型数据库 MySQL
          定时邮件服务(发送考研词汇)
          定时邮件服务(发送考研词汇)
          68 0
          定时邮件服务(发送考研词汇)
          |
          Java 开发者
          实现发送带附件的邮件|学习笔记
          快速学习实现发送带附件的邮件
          195 0
          实现发送带附件的邮件|学习笔记
          |
          Java 数据安全/隐私保护 Spring
          如何使用JavaMailSender给曾经心爱的她发送一封特别的邮件
          如何使用JavaMailSender给曾经心爱的她发送一封特别的邮件
          233 0
          如何使用JavaMailSender给曾经心爱的她发送一封特别的邮件
          |
          前端开发
          童鞋,[HttpClient发送文件的技术实践]请查收
          1.对常规html表单上传文件的功能,做协议级分析。 2.根据分析结果,HttpClient使用同样的姿势发送文件: 使用multipart/form-data(多部分表单媒体类型)发起上传请求。
          童鞋,[HttpClient发送文件的技术实践]请查收
          |
          存储 网络协议 数据安全/隐私保护
          邮件传输的过程都看不懂。那我走(狗头)
          给学习网络的新手一个我自己总结的建议: 我觉得学网络先要先把最基础最常用的协议的原理搞的明明白白,然后再学习难的协议或者是拓展的协议就好理解容易上手了。
          173 0
          邮件传输的过程都看不懂。那我走(狗头)
          |
          数据安全/隐私保护 Android开发
          如何使用QQ发送加密邮件
          电子邮件是工作和生活的必须。但是,电子邮件是“明信片”(明文收发),无法保证邮件机密信息在邮件流转过程和在邮件服务器中存储的安全。怎么办?
          如何使用QQ发送加密邮件