python bytes与str之间的转换 hex的字符转换

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"))#你好啊

参考:https://www.cnblogs.com/huchong/p/9640815.html。

你可能感兴趣的:(Python)