Что означает такие виды, как "% U + R m" в шестнадцатеричном - PullRequest
1 голос
/ 06 марта 2020

Я пытался читать MKV видео двоичного чтения с python, поэтому мой код был:

a = open("vokoscreen-2019-12-21_12-15-11.mkv","rb")
a.read()

и получил большой результат, это маленькая часть

W0I\xfb\xd4\x95l\xcfG\xa1\xa0\xb20\x9a\xb6\xa9\xbc\xa2\xdd\xc5\x9b}\x17e\xc2q\xa8d\x94\xda\x91\xd5F\xb9\xcbW2QK+p/\xc0\xd9\xf4D\x84\xda\xcb\xa7\xd42(b\r\x8f\x10\xb5\x84\xb0\x8f\xe3,\xaaf\xcfkd\xcf\xdb(}\xcf\tp\x84\xde\xb2l\xbfZ\xc8\xcc\x03+\xfe7;\x816\xa8sh] m\

мой вопрос: что такое (} в xdb (}?, что это за xcbW2QK + p ?, что] в этом xa8sh]. спасибо.

1 Ответ

1 голос
/ 06 марта 2020

Python байтовых литералов отображают печатный символ ASCII, который соответствует значению байта, если такой символ существует, в противном случае отображается экранированное шестнадцатеричное значение.

Например:

>>> # Inside the ASCII range but unprintable
>>> b'\x01'
b'\x01'

>>> # Inside the ASCII range and printable
>>> b'\x36'
b'6'

>>> # Outside the ASCII range
>>> b'\x91'
b'\x91'

Справочник по языку комментарии:

[Литералы байтов] могут содержать только символы ASCII; байты с числовым значением c, равным 128 или более, должны быть выражены экранированием.

...