从字节数组中拆分字符串
Splitting a String from byte array
我对 python 和 PLC 完全陌生。我从西门子 PLC 的特定标签中收到了一个字节数组格式的字符串,如下所示 (b'\xfe\x07Testing\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
我只需要获取字符串“Testing”并将其显示在 GUI 中。我不知道如何从这个字节数组中拆分“测试”。谁能帮我实现它。我正在使用 python 3.
发送前在PLC软件中设置为字符串格式。我已经完成了以下代码来读取标签值
import snap7
from snap7.util import *
import struct
import snap7.client
import logging
DB_NUMBER = ***
START_ADDRESS = 0
SIZE = 255
logging.basicConfig()
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
plc = snap7.client.Client()
plc.connect('My IP address',0,0)
plc_info = plc.get_cpu_info()
print(plc_info)
state = plc.get_cpu_state()
print(state)
db = plc.db_read(DB_NUMBER, START_ADDRESS, SIZE)
print(db)
我正在获取字节数组形式的输出。
(b'\xfe\x07Testing\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
没有任何关于字符串是否总是在同一位置或诸如此类的信息,我只能提供这个非常静态的答案:
# The bytearray you gave us
barray = bytearray(b'\xfe\x07Testing\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
# Start at index 2, split at first occurrence of 0byte and decode it to a string
print(barray[2:].split(b"\x00")[0].decode("utf-8"))
>>> Testing
a = '\xfe\x07Testing\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b = a.split("\x00")[0][2:]
将给 b 为:
'Testing'
我对 python 和 PLC 完全陌生。我从西门子 PLC 的特定标签中收到了一个字节数组格式的字符串,如下所示 (b'\xfe\x07Testing\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
我只需要获取字符串“Testing”并将其显示在 GUI 中。我不知道如何从这个字节数组中拆分“测试”。谁能帮我实现它。我正在使用 python 3.
发送前在PLC软件中设置为字符串格式。我已经完成了以下代码来读取标签值
import snap7
from snap7.util import *
import struct
import snap7.client
import logging
DB_NUMBER = ***
START_ADDRESS = 0
SIZE = 255
logging.basicConfig()
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
plc = snap7.client.Client()
plc.connect('My IP address',0,0)
plc_info = plc.get_cpu_info()
print(plc_info)
state = plc.get_cpu_state()
print(state)
db = plc.db_read(DB_NUMBER, START_ADDRESS, SIZE)
print(db)
我正在获取字节数组形式的输出。
(b'\xfe\x07Testing\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
没有任何关于字符串是否总是在同一位置或诸如此类的信息,我只能提供这个非常静态的答案:
# The bytearray you gave us
barray = bytearray(b'\xfe\x07Testing\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
# Start at index 2, split at first occurrence of 0byte and decode it to a string
print(barray[2:].split(b"\x00")[0].decode("utf-8"))
>>> Testing
a = '\xfe\x07Testing\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b = a.split("\x00")[0][2:]
将给 b 为:
'Testing'