python byte类型_Python处理Bytes类型的心得

最近在写一个采集PLC信号的程序。

用到了PyQt5的QTcpSocket类,接收到的数据类型为QByteArray。以前是用C++ 与QT写的时候,用得挺熟的,就想当然地用了C++的方法。

后来发现数据处理得不太理想,用type()函数一看, QByteArray 切片后,或者用at()提取的数据类型为python3自带的bytes类型。于是,便开始了bytes与其他数据类型的转换之旅

获得bytes

>> b = bytes.fromhex('9a12')

>> b

b'\x9a\x12'

>> import struct

>> c = struct.pack('B', 118)

>> c

b'v'

>> type(c)

bytes转int,byteorder为little时,处理的数据为 ‘\x12\x9a’ ,很适合处理plc通信的16位数据。

>>int.from_bytes(b, byteorder='big', signed=False)

39442

>>int.from_bytes(b, byteorder='little', signed=False)

4762

>>int.from_bytes(b, byteorder='big', signed=True)

-26094

bytes转字符串

>>'%04X' % int.from_bytes(b, byteorder='big', signed=False)

'9A12'

ASCII码与bytes,是不同的概念,如果bytes的值超过128,用ord()处理bytes可能会报错。

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0x89 in position 0: ordinal not in range(128)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值