Найти - Пользователи
Полная версия: Bytes копирвание [решено]
Начало » Python для новичков » Bytes копирвание [решено]
1
alexbadaloff
Смысл по сокету принять 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
>>> 
terabayt
>>> 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!')
alexbadaloff
terabayt
>>> one=bytes([129,130,131])
>>> type(one)
<type 'str'>



>>> one=bytes([129,130,131])
>>> type(one)
<class 'bytes'>
>>>

terabayt
one=bytearray([129,130,131])
>>> type(one)
<type 'bytearray'>
>>> one
bytearray(b'\x81\x82\x83')
Тут будут не только необходимые для отправки байты, но и слово bytearray, которое мне не нужно.

Мне нужно, принять:
>>> one=bytes([129,130,131])

Поправить 2 байта, и отправить уже:
one=bytes([129,77,79])

А вот как поправить?
alexbadaloff
Видимо единственный вариант, но зато рабочий, обычная конкатенация в другую переменную:

>>> one=bytes([129,130,131])
>>> one
b'\x81\x82\x83'
>>> two=one[:1]+bytes([132,133])
>>> two
b'\x81\x84\x85'
py.user.next
alexbadaloff
Тут будут не только необходимые для отправки байты, но и слово bytearray

Не будет там слова bytearray, это пишет интерпретатор для пользователя, чтобы тот видел, что это не bytes.

bytearray() - это тот же bytes(), только с дополнительными методами. Поэтому его везде можно использовать так же, как и bytes().

>>> b = bytes([1, 2, 3])
>>> ba = bytearray(b)
>>> ba[1] *= 3
>>> b = bytes(ba)
>>> b
b'\x01\x06\x03'
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB