У меня есть вопрос относительно типа байтов в Python 3, который я вполне могу понять.
Например:
Когда я пишу следующее:
>>> a = b'\xff\x10'
>>> a[0] # It's understandable that the first byte( 8 bits = 0xff in hex ) gives the decimal equivalent 255
255
>>> a[1] # Same goes here as well. hex value 10 = 16 in decimal
16
Вот сложная часть. Или я могу просто неправильно это понять. Когда я пишу байты, как показано ниже:
a = b'1102 '
a [0]
49 # Это значение ASCII 1
a [1]
49 # Это значение ASCII равно 1
a [2]
48 # Это значение ASCII равно 0
a [3]
50 # Это значение ASCII 2
Разве вышеприведенный вывод не должен быть десятичным эквивалентом, каким был вывод шестнадцатеричных байтов? Или просто укажите односимвольное значение ASCII при индексировании .?
Выход изменяется даже для восьмеричных и двоичных чисел (или, может быть, байты просто представлены в шестнадцатеричных эквивалентах.)
a = b '\ o07 \ o10 '
a [0]
92 # Это значение ASCII (back-sla sh)
a [1]
111 # Это значение ASCII o
a [2]
48 # Это значение ASCII 0
a [3]
55 # Это значение ASCII 7
a [4]
92 # Это значение ASCII \
a [5]
111 # Это значение ASCII o
a [6]
49 # Это значение ASCII 1
a [7]
48 # Это Значение ASCII 0
Попробовал и это.
>>> a = b'\b1\b1\b0\b2'
>>> a[0]
8 # This is the ASCII value of \b which is backspace
>>> a[1]
49 # This is the ASCII value of 1
>>> a[2]
8 # This is the ASCII value of 1
>>> a[3]
49 # This is the ASCII value of 1
>>> a[4]
8 # This is the ASCII value of \b which is backspace
>>> a[5]
48 # This is the ASCII value of 0
>>> a[6]
8 # This is the ASCII value of \b which is backspace
>>> a[7]
50 # This is the ASCII value of 2
Другими словами, возможно ли представлять двоичные, восьмеричные значения в байтовом типе. Или Только шестнадцатеричные значения могут быть представлены в байтовом типе, поскольку каждое шестнадцатеричное значение составляет 4 бита, а 2 шестнадцатеричных значения составляют байт .?
Мой вывод состоит в том, что приведенное ниже недопустимо, и могут быть декодированы только шестнадцатеричные эквиваленты. в десятичное значение при индексировании.
\ b и \ o в b '\ b1 \ b1 \ b0 \ b2' и b '\ o07 \ o10' не дает десятичного эквивалента
Дайте мне знать ваши мысли и ответы.
Кроме того, почему
>>> a = b'\x09'
>>> a
b'\t' # Horizontal tab I guess, but what about \n . Is it a = b'\x0A'?
>>> a[0]
9
Спасибо