Форум сайта python.su
16
Смысл по сокету принять bytes, обновить часть и отослать ответом изменённую строку bytes.
И я не могу понять как мне из одной строки bytes скопировать часть из другой строки bytes:
>>> one=bytes([129,130,131]) >>> two=bytes([22,33]) >>> one[0]=two[0] Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> one[0]=two[0] TypeError: 'bytes' object does not support item assignment >>>
Отредактировано alexbadaloff (Июль 28, 2014 12:53:45)
Офлайн
103
>>> one=bytes([129,130,131]) >>> type(one) <type 'str'> >>> one[0] '[' >>> one=bytearray([129,130,131]) >>> type(one) <type 'bytearray'> >>> one[0] 129 >>> one[0] = 36 >>> one bytearray(b'$\x82\x83')
>>> one=bytes([129,130,131]) >>> one bytearray(b'\x81\x82\x83') >>> one=bytearray([129,130,131]) >>> two=bytearray([22,33]) >>> one[0]=two[0] >>> one bytearray(b'\x16\x82\x83') >>> two bytearray(b'\x16!')
Отредактировано terabayt (Июль 28, 2014 10:58:20)
Офлайн
16
terabayt>>> one=bytes([129,130,131]) >>> type(one) <type 'str'>
>>> one=bytes([129,130,131]) >>> type(one) <class 'bytes'> >>>
terabaytТут будут не только необходимые для отправки байты, но и слово bytearray, которое мне не нужно.one=bytearray([129,130,131]) >>> type(one) <type 'bytearray'> >>> one bytearray(b'\x81\x82\x83')
>>> one=bytes([129,130,131])
one=bytes([129,77,79])
Отредактировано alexbadaloff (Июль 28, 2014 12:49:04)
Офлайн
16
Видимо единственный вариант, но зато рабочий, обычная конкатенация в другую переменную:
>>> one=bytes([129,130,131]) >>> one b'\x81\x82\x83' >>> two=one[:1]+bytes([132,133]) >>> two b'\x81\x84\x85'
Отредактировано alexbadaloff (Июль 28, 2014 12:53:10)
Офлайн
857
alexbadaloff
Тут будут не только необходимые для отправки байты, но и слово bytearray
>>> b = bytes([1, 2, 3]) >>> ba = bytearray(b) >>> ba[1] *= 3 >>> b = bytes(ba) >>> b b'\x01\x06\x03' >>>
Офлайн