У меня есть шестнадцатеричная строка, составленная из следующих байтов:
['0x17', '0x9', '0x5', '0x1f', '0x0', '0x4', '0x16 ',' 0x0 ',' 0x28 ',' 0x53 ',' 0x1c ',' 0x8 ',' 0x12 ',' 0x11 ',' 0x40 ',' 0xe ',' 0x54 ',' 0x3b ',' 0x6 ', «0x1e», «0x45», «0x49», «0xa», «0x45», «0xe», «0x1c», «0x1f», «0x59», «0x41», «0x6», «0x4f», «0x59 ',' 0xb ',' 0x16 ',' 0x2 ',' 0x44 ',' 0x53 ',' 0x1 ']
Шестнадцатеричная строка выглядит следующим образом:
'17951f0416028531c8121140e543b61e4549a45e1c1f594164f59b16244531'
Как я могу получить исходный байтовый массив?
В python 3.x:
bytes.fromhex('17951f0416028531c8121140e543b61e4549a45e1c1f594164f59b16244531')
возвращает
b '\x17 \ x95 \ x1f \ x04 \ x16 \ x02 \ x851 \ xc8 \ x12 \ x11 @ \ xe5C \ xb6 \ x1eEI \ xa4 ^ \ x1c \ x1fYAd \ xf5 \ x9b \ x16 $ E1 ',
и в python 2.x: str('17951f0416028531c8121140e543b61e4549a45e1c1f594164f59b16244531').decode('hex')
возвращает
b '\ x17 \ x95 \ x1f \ x04 \ x16 \ x02 \ x851 \ xc8 \ x12 \ x11 @ \ xe5C \ xb6 \x1eEI \ xa4 ^ \ x1c \ x1fYAd \ xf5 \ x9b \ x16 $ E1 '.
Оба из них совершенно неверны.И bytes.fromhex, и decode ('hex') читают по 2 байта за раз, поэтому '0x9' и '0x5' читаются как '0x95'.Есть ли способ исправить это?
Обратите внимание, я не могу контролировать генерацию исходной шестнадцатеричной строки.Приветствия.