python-关于字节类型的转换

1. bytes(source)

--source为字符串时,则按照指定的 encoding 将字符串转换为字节序列
	bytes('123asd', encoding='utf-8')			# 输出为:b'123asd'
	bytes('我', encoding='utf-8')				# 输出为:b'\xe6\x88\x91'
--source为数字n(可以写为任意进制)时,则表示初始化n个字节的bytes序列,
	bytes(5)								# 输出为:b'\x00\x00\x00\x00\x00'
--source为可迭代类型,则元素必须为[0 ,255] 中的整数
	bytes([1, 2, 3, 4])						# 输出为:b'\x01\x02\x03\x04'

同样是bytes类型的数据,为什么有的显示为b’123’这样子的,有的显示为b’\x00\x00\x00\x00\x00’?

因为utf-8和ASCII(包含数字0-9,英文Aa-zZ,以及一些符号)是兼容的,所以只是显示为b’123’,实际字节类型的存储形式都是二进制

2. bytes().hex()和bytes.fromhex()

--bytes(source).hex()
	功能:将source转换为字节类型,然后以16进制字符串的形式显示出来
	参数:source的类型同上
	返回值:返回值为16进制字符串类型
	实例:
		bytes('123', encoding='utf-8').hex()  	# 输出为:313233  类型为<class 'str'>

		
--bytes.fromhex(hexstr)
	功能:将传入的16进制字符串转换为字节类型,
	返回值:字节类型, 形式可为b'', b'\x00\x00\x00\x00\x00'
	bytes.fromhex('313233')					# 输出为:b'123'

3. binascii.a2b_hex(hexstr) | binascii.unhexlify(hexstr) | bytes.fromhex(hexstr)

	--功能:将16进制字符串转换为字节类型
	--参数hexstr:必须包含偶数个十六进制数字(可以是大写或小写)
	--返回值:由十六进制字符串hexstr表示的二进制数据
	实例:
		bytes.fromhex('313233')					# 输出为:b'123'
		binascii.a2b_hex('313233')				# 输出为:b'123'
		binascii.unhexlify('313233')			# 输出为:b'123'
		
		bytes.fromhex('abdc')					# 输出为:b'\xab\xcd'
		binascii.a2b_hex('abcd')				# 输出为:b'\xab\xcd'
		binascii.unhexlify('abcd')				# 输出为:b'\xab\xcd'

4. binascii.b2a_hex(字节串) | binascii.hexlify(字节串) |

	--功能:传入二进制,得到ascii编码的二进制形式
	--参数:字节串
	--返回值:返回二进制数据的十六进制表示
	实例:
		binascii.hexlify(b'abcd')				# 输出为:b'61626364' <class 'bytes'>
		binascii.b2a_hex(b'abcd')				# 输出为:b'61626364' <class 'bytes'>
		
		binascii.hexlify(b'%/\x8d\x80\xe6\xee\xb4\xcfB\x1c\xbaa\xb1\x07$\xee\xeb')				# 输出为:252f8d80e6eeb4cf421cba61b10724eeeb
		binascii.b2a_hex(b'%/\x8d\x80\xe6\xee\xb4\xcfB\x1c\xbaa\xb1\x07$\xee\xeb')				# 输出为:252f8d80e6eeb4cf421cba61b10724eeeb	

学习借鉴:
https://www.cnblogs.com/liming19680104/p/12175570.html (python–binascii–二进制和ASCII编码的二进制的转换)
https://www.pynote.net/archives/1383 (int与bytes的转换)

最后,感谢每一个无私分享的博主!

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值