python 3使用binascii方法的报错解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 3使用binascii方法的报错解决相关的知识,希望对你有一定的参考价值。

环境是python 3

问题:

使用binascii方法一直出现报错TypeError: a bytes-like object is required, not ‘str‘

#coding: utf-8

import binascii

 a = worker
 b = binascii.b2a_hex(a)
 print(b)

#b = binascii.b2a_hex(a)
#TypeError: a bytes-like object is required, not ‘str‘

解决方法:

后来修改如下代码才会不报错

b = binascii.b2a_hex(a.encode())

原理:

在新版本的python3中,取消了unicode类型,代替它的是使用unicode字符的字符串类型(str),字符串类型(str)成为基础类型如下所示,而编码后的变为了字节类型(bytes)但是两个函数的使用方法不变:

     decode              encode

bytes ------> str(unicode)------>bytes

u = 中文 #指定字符串类型对象u
str = u.encode(gb2312) #以gb2312编码对u进行编码,获得bytes类型对象str
u1 = str.decode(gb2312)#以gb2312编码对字符串str进行解码,获得字符串类型对象u1
u2 = str.decode(utf-8)#如果以utf-8的编码对str进行解码得到的结果,将无法还原原来的字符串内容

 

 

以上是关于python 3使用binascii方法的报错解决的主要内容,如果未能解决你的问题,请参考以下文章

Python-解决下载gmpy2的报错问题

Python-解决下载gmpy2的报错问题

Python-解决下载gmpy2的报错问题

python已写内容中可能的报错及解决办法

vue.js常见的报错信息及其解决方法的记录

python相关的报错处理