#python #python-3.x #byte #ascii
#питон #python-3.x #байт #ASCII
Вопрос:
Например , если вы представляете 5D в bytearray, вы получаете bytearray(b']')
, но я не понимаю, почему.
Это из-за ASCII, и если да, то как Python обрабатывает все символы ASCII?
Комментарии:
1. 5D hex-это 93 десятичных знака, для которых используется код ascii
]
. Вот как bytearray отображает легко печатаемые символы.2. python2 или python3? Результат будет другим.
3. Попробуйте
b']' == chr(0x5d)
в каждом.4. Это потому, что x5d-это символ ] в ASCII, и это часто раздражает Python при отображении содержимого bytearray, если вы хотите, чтобы все шестнадцатеричные символы использовали что-то вроде
','.join(f'\x{b:02x}' for b in ba)
.
Ответ №1:
Под капотом все двоично, верно?
5d
в шестнадцатеричном формате-это просто 01011101
в двоичном формате. Оказывается, что ]
в ascii то же самое, что и в двоичном 01011101
формате . Так что на самом деле у вас просто есть 01011101
или в base10 93
, представленные в шестнадцатеричном формате и Ascii.
Комментарии:
1. Таким образом, Python просто использует Ascii, где он может экономить память при печати?
2. Ничего общего с памятью, поскольку байт есть байт есть байт. Он просто использует ascii в качестве представления байта. Он также мог бы просто использовать шестнадцатеричный (или двоичный, или десятичный, или базовый 29), но по какой-то причине они решили использовать ascii. Я считаю, что вы можете использовать
.hex()
метод bytearray, чтобы показать его как шестнадцатеричный, если это ваше предпочтение.