python bytes与str之间的转换 hex的字符转换
程序员文章站
2022-03-31 16:59:45
...
python在与外接设备和后台交互编程中经常遇到字符格式匹配的问题,我在 pyserial和socket编程中遇到的bytes类型字符与其他形式的字符串之间的转化问题的解决方法做了搜集,下面就我本人在 pyserial串口编程与网络socket编程中遇到的字符转换所用到的基础知识点做下小结,整理出的常用字符转换基础方法如下。以供大家试验,加快工作进度。
#python3.7
import binascii
#ByteToHex的转换
def ByteToHex( bins ):
return ''.join( [ "%02X" % x for x in bins ] ).strip()
#返回数据16进制字符串 '91f8148cfbd5faa3d98b'
#HexToByte的转换
def HexToByte( hexStr ):
return bytes.fromhex(hexStr)
print('\r\n')
print("bytes类型hex字符串 转 str类型hex字符串")
Bytes1 = b'\x91\xf8\x14\x8c\xfb\xd5'
Hex1 = ByteToHex( Bytes1 )
print(Hex1)
print('\r\n')
#socket编程可以把要发送的16进制hex字符串转化文socket发送的byte类型字符串发送
print("str类型hex字符串 转 bytes类型字hex符串")
hexStr = "91f8148cfbd5"
Bytes2 = HexToByte( hexStr )
print(Bytes2)
print('\r\n')
print("bytes类型转为16进制bytes类型")
ret = binascii.b2a_hex(Bytes2) #ret为16进制bytes
print(ret)#b'91f8148cfbd5'
print('\r\n')
print(binascii.b2a_hex(u"你好啊".encode("utf8")))#'e4bda0e5a5bde5958a'
print('\r\n')
print(binascii.b2a_hex(u"你好啊".encode("gbk")))#'c4e3bac3b0a1'
print('\r\n')
print(binascii.b2a_hex(u"你好啊121A号".encode("gbk")))#'c4e3bac3b0a131323141bac5'
print('\r\n')
print(binascii.a2b_hex("e4bda0e5a5bde5958a"))#'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'
print('\r\n')
print(binascii.a2b_hex("e4bda0e5a5bde5958a").decode("utf8"))#你好啊
推荐阅读
-
Python中实现字符串类型与字典类型相互转换的方法
-
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
-
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
-
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
-
在python 不同时区之间的差值与转换方法
-
python中ASCII码字符与int之间的转换方法
-
Python 字符串与二进制串的相互转换示例
-
python str与bytes之间的转换代码实例
-
python字符串与url编码的转换实例
-
C# 16进制与字符串、字节数组之间的转换