Объект байтов является неизменным объектом в Python, хотя вы можете индексировать его и повторять его.
Вы можете превратить его в байтовый массив, и это будет самый простой способ сделать это
Или вы можете, например, превратить его в список, а затем изменить значение следующим образом:
tmp_list = list(bin(tmp)[2:])
tmp_list[3] = '1'
Первые два символа удаляются ([2:]), потому чтоони всегда '0b'
, конечно, это необязательно.
Также байтом является строковое представление байта (следовательно, неизменяемое), таким образом, присваивание, которое вы хотите сделать, это = '1'
, а не = 1
Если обращение к списку, а затем обратно - это не то, что вам нужно, вы также можете просто скопировать строковое представление и изменить один элемент, который хотите изменить.
В качестве альтернативы вы можете выполнять побитовые операции (на самом int), если вы чувствуете себя комфортно при работе с двоичными файлами