Python разбивает двоичный буфер данных на блоки определенного размера и сохраняет их в переменных

#python

#python

Вопрос:

У меня есть приведенный ниже код:

 tag_and_data = bin_file_obj.read(chunk_size)
  

А затем я разделяю его на две переменные в зависимости от некоторого размера байта (первые 16 байт для тега и остальные все для данных), используя нарезку, как показано ниже:

 tag, data = tag_and_data[16:], tag_and_data[:16]
  

Могу ли я сделать это в одной строке? Существует ли какой-либо встроенный метод, такой как split(), для фрагментации данных на основе размера байта и распаковки их в переменные?

Ответ №1:

Я не думаю, что есть встроенное решение, но вы бы написали:

 def decompose_tag_and_data(tag_and_data):
    return tag_and_data[16:], tag_and_data[:16]
  

а затем вызовите его следующим образом:

 tag, data = decompose_tag_and_data(bin_file_obj.read(chunk_size))
  

Существует очевидное очевидное расширение для:

 def decompose(data,index):
    return data[:index],data[index:]
  

но расширение этого для поддержки более одного индекса способом pythonesque мне недоступно.