我使用Don Jayamanne的Python扩展在Visual Studio Code中在Windows上开发Python脚本。这是我的手表的内容'调试窗口:
字节数组someBytes的长度是20,但Python的len函数使它成为77.为什么?
因此生成数组:
def sendTouchDown(ble):
message = bytes([0x01, 0x68, 0x03, 0x39, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF])
if ble:
sendMuxBle(message)
else:
sendMuxRfcomm(message)
然后测量它的长度:
def sendMuxRfcomm(someBytes):
crc = 0xFFFF
for i in range(0, len(someBytes), 2):
答案 0 :(得分:1)
这听起来像是Python 3中修复过的那些奇怪的东西之一。
bytes
构造函数将传递任何非字符串并将其转换为字符串。因此,您的陈述在逻辑上等同于此:
thelist = [0x01, 0x68, 0x03, 0x39, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
message = bytes(str(thelist))
创建一个像这样的字节文字:
message = b'\x01\x68\x03\x39\x05\x01\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF'
当我为Python 2.6提议时,我回去阅读PEP的字节:
https://www.python.org/dev/peps/pep-0358/
它清楚地说明了构造函数:
初始化参数可以是字符串(在2.6中,str或unicode),可迭代的整数,或单个整数。
也许这是Python中的一个错误。或者我在这里找不到列表和字符串之间的Pythonic。