printf在尝试查找十六进制mem位置时给出一个问号

时间:2018-01-06 12:15:41

标签: linux assembly hex printf

我尝试使用以下命令在linux(linux mint,kali linux和ubunutu)上打印出十六进制内存位置:

printf "\xaa" 
?

我得到的所有输出都是一个问号,这意味着我理解十六进制内存不被识别?

1 个答案:

答案 0 :(得分:1)

printf "\xaa"打印对应于十六进制代码“aa”的字符(十进制170),它与内存位置无关。

您看到的内容取决于终端的编码设置。如果您的终端配置为显示UTF-8,您可能会在菱形中看到问号:

这意味着字节序列aa与任何UTF-8字符都不对应。

您还可以使用hexdump工具(例如xxd)来显示输出的十六进制表示:

$ printf '\xaa' | xxd
0000000: aa                                       .

例如,序列c2 a1LATIN SMALL LETTER A WITH ACUTE进行编码:

$ printf '\xc3\xa1\n'
á