我是一个新手!
我正在使用以下方法从传感器读取数据:
data = ""
dev = os.open("/dev/rtlightsensor0", os.0_RDWR)
data = os.read(dev,16)
print(data)
结果:
b'1 53 -5 1\n'
我认为这是一个字符串,但看起来更像一个缓冲区?有没有人能给我一些提示,如何获得这4个数字?
我已经尝试过:
value1 = data[1]
但结果是不同的数字。
file = open("/dev/rtlightsensor0", "r")
line = file.readline()
data = [int(each) for each in line.split())
dev = os.open("/dev/rtlightsensor0", os.0_RDWR)
raw_data = os.read(dev,16)
data = []
data.append(int.from_bytes(raw_data[0:4], 'little'))
data.append(int.from_bytes(raw_data[4:8], 'little'))
data.append(int.from_bytes(raw_data[8:12], 'little'))
data.append(int.from_bytes(raw_data[12:16], 'little'))
print(data)
dev = os.open("/dev/rtlightsensor0", os.0_RDWR)
raw_data = os.read(dev, 16)
data = [int.from_bytes(raw_data[i * 4: (i + 1) * 4], 'little') for i in range(4)]
print(data)
顺便说一下,这样读取二进制数据并不明智。一般来说,建议使用 numpy
包。
这是一个字节数组。您可以使用 decode
函数将字节数组转换为字符串。
>>> test = b'1 53 -5 1\n'
>>> type(test)
<class 'bytes'>
>>> test[0]
49
>>> test_1 = test.decode("utf-8")
>>> test_1[0]
'1'
你可以使用列表推导式获取整数:
[int(x) for x in b'1 53 -5 1\n'.decode().split(' ')]
# [1, 53, -5, 1]