получение диапазона байтов из байтового массива

#arrays #python-3.x #regex

#массивы #python-3.x #регулярное выражение

Вопрос:

У меня есть байтовый массив:

 b_arr = b'\xff\x02\x04\x01\x00\x02'
  

Я хочу получить последние 3 байта как:

 out = 'b\x01\x00\x02'
  

Я пробовал:

 m = re.search("rb'\x02\x04'(.*)",b_arr)
  

Но получить TypeError: TypeError: cannot use a string pattern on a bytes-like object

Ответ №1:

Технически это bytes объект, а не bytearray объект, и в нем есть шестнадцатеричные экранирующие коды. Это позволит получить последние три шестнадцатеричных escape-кода с помощью среза строк:

 >>> b_arr = b'\xff\x02\x04\x01\x00\x02'
>>> b_arr[-3*4:]
b'\x01\x00\x02'
  

Регулярное выражение будет работать, если оно правильно указано:

 >>> b_arr = b'\xff\x02\x04\x01\x00\x02'
>>> import re
>>> m = re.search(rb'\x02\x04(.*)',b_arr)
>>> m.group(1)
b'\x01\x00\x02'