目前我试图使用pygatt向ble特征发送数据,但它使用bytearray作为参数。 我的输入是一个二进制文件,例如:
$ xxd file.bin
00000000: 0300 1100 0022 0100 0021 8ff6 82ce 8dad ....."...!......
00000010: 54 T
我想要的是:
^{pr2}$因此,也许我对这种低层次方法的理解是错误的,但我要做的是:
import binascii
import hexdump
my_file = "file.bin"
with open(my_file, 'rb') as file_t:
# read the file as xxd do
blob_data = hexdump.hexdump(file_t, result='return')
print(blob_data)
with open(my_file, 'rb') as file_t:
blob_data = binascii.hexlify(file_t.read())
print(blob_data)
with open(my_file, 'rb') as file_t:
blob_data = bytearray(file_t.read())
print(blob_data)
输出为:
00000000: 03 00 11 00 00 22 01 00 00 21 8F F6 82 CE 8D AD ....."...!......
00000010: 54 T
b'030011000022010000218ff682ce8dad54'
bytearray(b'\x03\x00\x11\x00\x00"\x01\x00\x00!\x8f\xf6\x82\xce\x8d\xadT')
但从这一点开始,我对如何将其转换为bytearray感到迷茫,最后一个实现并不遥远,但是一些字符被转换为它们的ASCII等价物(例如\x22=>;“)
有人知道怎么做吗? 谢谢各位
由于OP没有回答他们自己的帖子,而且这个问题在讨论中得到了解决,我将在这里重述答案。在
以及
^{pr2}$内在是一样的。字符串表示的不同之处在于使数组更短、更易于读取,并且它不会影响bytearray的实际内部结构。在
任何接受第一个bytearray作为参数的函数/程序也应该接受第二个。通过使用
==
运算符比较这两者,可以很容易地验证这一点。在相关问题 更多 >
编程相关推荐