1

データの一部を置き換えようとすると、エラーが発生します。
送り返す前に、データの一部の 16 進数値を置き換えたいと思いました。
これにどのようにアプローチすればよいですか?

data, addr = s.recvfrom(32768)
if knownClient is None:
    knownClient = addr
if addr == knownClient:
    s.sendto(data, knownServer)
    print "Sent     : " + ":".join("{0:02X}".format(ord(c)) for c in data)
else:
    data[10] = 0xFF #error_here
    data[11] = 0x0A #error_here
    s.sendto(data, knownClient)
4

2 に答える 2

3

文字列を変更することはできません - それらは不変です。文字列を変更する場合は、いくつかのオプションがあります。最初のオプションは、新しい文字列を作成することです。

data = data[:10]+chr(0xFF) + chr(0x0A) + data[12:]

データを頻繁に変更する場合は、代わりにリストまたは配列を使用することをお勧めします

datalist = list(data)
datalist[10] = chr(0xFF)
datalist[11] = chr(0x0A)

次に、変更後に文字列に戻りたい場合:

data = ''.join(datalist)
于 2013-04-21T16:20:45.027 に答える
0

新しい文字列を作成する必要があります:

data = data[:10] + chr(0xFF) + data[11:]
于 2013-04-21T16:14:06.060 に答える