行尾C++ Python 的行尾

End Of Line C++ to Python

本文关键字:Python C++ 行尾      更新时间:2023-10-16

我正在做一个python程序,它读取套接字接收的C++数据包。我打开它,它进展顺利,直到它到达终点,我想 python 不理解 EOL 字符C++如果我没记错的话,"\0"。

所以我认为我应该在字符串中搜索"\0"字符并替换为python EOL,但我不知道它是哪个字符!我搜索但没有找到,以为是"\000",但不起作用,这就是我正在尝试的:

def decode(s):
    return s
        .replace('','00')
data,adr = clientSkt.recvfrom(56)
r1,r2,r3 = unpack('B5s50s',data) #unsigned char, string[5], string[50]
r3 = decode(r3)

找到它:
我所做的是搜索 scape char \0,然后在 scape char 的索引之间剪切 50 个字符长的字符串,请参阅:

def decode(s):
i = 0
while (s[i] != ""):
    i+=1
s = s[:-(50-i)]
print "Scape char is in " ,i
return s
data,adreca = skt1.recvfrom(56)
r1,r2,r3 = unpack('B5s50s',data)
print "r1=" ,r1
print "r2=" ,r2
print "r3=" ,r3
r3 = decode(r3)
print "r3=" ,r3

您似乎正在从数据包中读取固定长度的字符串,如果字符串未填充缓冲区,则该字符串以 null 字符结尾,并且字符串后可能有垃圾。您需要检测空字符并擦除它及其后的所有字符。

def trim_zeros(s):
    i = s.find('x00')
    if i < 0:
        return s
    return s[0:i]

在 Python 中,没有终止字符串的""字符。

尝试:

def decode(s):
    return s[:-1] if s[-1] == "" else s