这个东西:“\x30\xff\xff\x31\xff\xff\xff\xff”叫什么?

What does this thing: "\x30\xff\xff\x31\xff\xff\xff\xff" called?

各位!最近在学C。现在,当我访问 XDA Developers 时 phone,我遇到了这段代码:

char next_ptr[8] = "\x30\xff\xff\x31\xff\xff\xff\xff";

这是十六进制数组还是什么?但是,我注意到当我计算这些值中有多少在括号之间时,它们的值与 char next_ptr[8] 相同。因为我记得“shellcode”这个词,在 google 中用图像搜索 shellcode 这个词时,我注意到这里有一些具有这些形式的图像中的代码片段。

我试过像这样将它们转换为文本:

将其转换为原始形式:

转换成原来的十六进制形式:

我不知道这个语法的名称是什么,所以我没有搜索它,请为我提供一些线索。谢谢!

这些被称为十六进制转义序列。它基本上只是一种可选的写法:

char next_ptr[8] = {0x30, 0xff, 0xff, 0x31, 0xff, 0xff, 0xff, 0xff};

(字符串文字的空终止符被丢弃。)

shellcode无关。

另外值得注意的是,将 0xFF 存储在 char 中是天真的,因为它不能保证足够大以存储一个,因为 char 具有实现定义符号性,并且可能只能存储最多 0x7F 的正值。存储原始数据的正确数据类型是uint8_t.