Но последнее представление ^[
, похоже, не имеет какой-либо связи с десятичной дробью 27
На первый взгляд это может показаться так, но на самом деле ссылка есть.
Во-первых, вы должны понимать, что курсор в нотации, такой как ^[
, означает, что клавиша управления удерживается при нажатии [, поэтому ^[
равно ctrl - [.Другими словами, управляющая клавиша действует точно так же (в терминале), как ctrl - [.(Относительно того, почему клавиша escape создает именно этот символ: см. Вторую часть моего ответа.)
Символ [
закодирован в ASCII как десятичный 91 или 0x5b, но это наиболее полезно посмотреть надвоичное представление: 0b01011011.^[
, или клавиша ESC, кодируется как десятичное 27 или 0b00011011.Если выровнять эти два двоичных числа:
[ 0b01011011
^[ 0b00011011
, мы увидим, что ^[
- это просто [
с очищенным битом 7.Фактически, добавление управляющего ключа, по сути, просто очищает три верхних бита кода символа 1 .
Таким образом, связь между ^[
и 27 заключается в том, что 91- 64 = 27:)
, почему ^[
был выбран в качестве способа представления побега в терминале
Я понятия не имею!