В python, когда я читаю файл jpeg в битовых потоках, я ожидаю, что файл jpeg будет иметь только шестнадцатеричные значения, но я нахожу все специальные символы (,!, #, $ и т. д.

def encryption(pathname,filename):
with open(pathname+filename,"rb") as file:
    jpgdata=file.read()
print(jpgdata)

вывод: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\ х02\х02\х02\х02\х02\х03\х02\х02\х02\х03\х03\х03\х03\х04\х06\х04\х04\х04\х04\х04\х08\х06\х06\х05\х06\ t\x08\n\n\t\x08\t\t\n\x0c\x0f\x0c\n\x0b\x0e\x0b\t\t\r\x11\r\x0e\x0f\x10\x10\ x11\x10\n\x0c\x12\x13\x12\x10\x13\x0f\x10\x10\x10\xff\xc0\x00\x0b\x08\x02\x00\x02\x00\x01\x01\x11\ х00\хфф\хс4\х00\х1д\х00\х00\х01\х05\х01\х01\х01\х01\х00\х00\х00\х00\х00\х00\х00\х00\х00\х05\х03\х04\ x06\x07\x08\x02\x01\x00\t\xff\xc4\x00M\x10\x00\x01\x03\x02\x04\x03\x05\x06\x04\x05\x02\x06\x01\x01\ x04\x0b\x01\x02\x03\x11\x00\x04\x05\x12!1\x06AQ\x07\x13"aq\x142\x81\x91\xa1\xf0\x08\xb1\xc1\xd1\x15# B\xe1\xf13R\x16$Cbr\x82\xa2\x92\x17%&D\xb2\t4STcds\x83\xc2\xd2\xff\xda\x00\x08\x01\x01\x00\x00?.... .

можно ли получить это в шестнадцатеричном формате, можете ли вы объяснить, почему присутствуют специальные символы?


person Akhil Ratheesh    schedule 13.02.2020    source источник
comment
Специальные символы присутствуют, потому что вы буквально читаете байты. Если вы хотите шестнадцатеричный, вам придется преобразовать его самостоятельно. Например, ! имеет шестнадцатеричное значение 21, если я правильно вычислил его.   -  person Peter    schedule 13.02.2020
comment
Отвечает ли это на ваш вопрос? Как декодировать необработанный двоичный код в шестнадцатеричный   -  person r3mainer    schedule 13.02.2020
comment
@Peter Знаете ли вы какую-либо функцию, которая дает правильный шестнадцатеричный формат, почему я хочу, чтобы она была в шестнадцатеричном формате, потому что я хочу преобразовать шестнадцатеричные значения в десятичные значения, что мне очень сложно сделать в этом текущем формате?   -  person Akhil Ratheesh    schedule 14.02.2020
comment
Почему бы просто не преобразовать байты прямо в десятичные числа? Используйте [ord(i) for i in file.read()] или даже map(ord, file.read()), я думаю.   -  person Peter    schedule 14.02.2020