我有一个来自机械臂的数据流,如下图所示。但是,我会从源控制器接收其他字符。我怎样才能删除这些不良角色?
Datastream的: B' \ X00 \ X00 \ X04 \ XE6 \ X10 \ X00 \ X00 \ X00 \ X1D \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ r \ xd8c \ X01 \ X01 \ X01 \ X00 \ X00 \ X00 \ X00 \ X00?\ XF0 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ xfb的\ X01 @ \ X06 \ XCA \ XF1!\ xfdD \ x9b @ \ X06 \ XCA \ XE7 \& #39; \ x15k \ xa7 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 = \ xb2
期望的结果: B' \ X00 \ X00 \ X04 \ XE6 \ X10 \ X00 \ X00 \ X00 \ X1D \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ XD8 \ X01 \ X01 \ X01 \ X00 \ X00 \ X00 \ X00 \ X00 \ XF0 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ XFB \ X01 \ X06 \ XCA \ XF1 \ xfdD \ x9b \ X06 \ XCA \ XE7 \ x15k \ XA7 \ X00 \ X00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ xb2
CNC中 我现在的代码现在没有删除不需要的字符
import socket
import struct
import time
HOST = '192.168.1.10'
PORT = 300002
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST,PORT))
data = s.recv(89)
data2 = struct.unpack("!iBiBQ7?2B2diB3d4fB", data)
print(data2)
s.close()
答案 0 :(得分:0)
由于你没有说明为什么你认为这些字符是不受欢迎的,我会假设你认为无关的字符是“不受欢迎的”,而它们实际上很重要。
"@" has a hex value 0x40
"D" has a hex value 0x44
等
搜索ASCII或ANSI以查看原因。
打印字符是因为您将值显示为字符串。 在计算机的内存中,它们仍然是十六进制数字!
相同的字节流可以表示为字符串,也可以作为数字读取。
例如,您可能希望将它们读作八位字节(字节),或int
s或单精度浮点数。
c
”。请注意ASCII代码ord('c')=99
或0x63
。
要将字符视为整数值,您可以执行以下操作:
[ord(x) for x in mystream]
并以十六进制显示
[hex(ord(x)) for x in mystream]
答案 1 :(得分:0)
for item in data2:
if item == "whatever":
data2.pop(item)
P.S我正在使用手机,代码可能没有正确缩进。