Я не знаю python, и я переношу библиотеку на С#, я столкнулся со следующими строками кода, которые используются в некоторых операциях ввода-вывода, но я не уверен, что это такое, я предполагаю, что он шестнадцатеричный, но я не знаю, почему он внутри строки, ни то, что делают обратные косые черты?
sep1 = '\x04H\xfe\x13' # record separator
sep2 = '\x00\xdd\x01\x0fT\x02\x00\x00\x01' # record separator
Обратная косая черта - это escape-символы. Они позволяют вставлять специальные символы (IE кавычки) внутри строки. \xNN является шестнадцатеричным, как вы говорите.
Похоже, что они используют строку вместо массива для меня. Я не совсем уверен, почему кто-то сделает это... но о хорошо
Я не знаком с С#, но в C, sep1 похож на char[] {0x04H, 0xfe, 0x13}
(с дополнительным 0 в конце, если это строка с нулевым завершением)
Это escape-последовательности. В Python \xNN
внутри (не сырой) строки обрабатывается как символ 0xNN
.
Как утверждали другие, он избежал символов, которые на самом деле не могут быть представлены в виде символов US ASCII. Почему вы это делаете?
По какой-то причине устройству ввода-вывода требуется последовательность байтов с этими специальными шестнадцатеричными значениями.
Некоторые языки не поддерживают собственный тип для байтов, и тогда у нас есть проблема. Как мы можем писать и отправлять последовательность байтов, когда мы не можем иметь их в переменной?
Язык C использует символы и строки символов для хранения этих байтов. Так что у вас нет строки. Подумайте об этом как о последовательности байтов (хранящихся в строке).
"Строка" может использоваться как обычная, т.е. она может быть отправлена на устройство ввода-вывода так же, как любой другой символ может быть отправлен, и, как правило, с теми же функциями (Write, Put, Print,...)
Такая же escape-последовательность работает на большинстве языков. Вам просто нужно использовать правильные строковые кавычки, в С#, что двойная кавычка (").