为什么我必须使用 \x1b 而不是 \ 来表示转义字符

Luk*_*ong 4 c escaping control-characters low-level-io

我读过\x1b代表转义字符,但'\'它本身不是转义字符吗?一个教程要我写

write(STDOUT_FILENO, "\x1b[2J", 4);
Run Code Online (Sandbox Code Playgroud)

清除屏幕。为什么不做'\[2J'这项工作?

ade*_*hox 5

虽然这个问题有点老了,但我会用\n作为例子给出我的两分钱。

尽管ASCII escape character\x1B、 且n\x6E,但无法\n使用 向字符串中插入字符\x1B\x6E,原因有二:

  1. ASCII 表中的字符ESC和编程语言中的转义字符\是两个不同的东西。

  2. 编程语言在源代码中(在字节级别之前)搜索\n(作为单个实体)以将其转换为换行字节,因此不会转换为任何内容。因此,即使您在源代码中使用(一个 ASCII和一个 ASCII ),它也不会转换为换行符。\x1B\x6E \x5C\x6E\n

Python 中的示例:

>>> print("Hello\x5C\x6EWorld")
Hello\nWorld
# if one still insists on inserting a new line using an ascii line-feed (\x0A), they can do:
>>> print("Hello\x0AWorld")
Hello
World
Run Code Online (Sandbox Code Playgroud)

HTH。