欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

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