也许我要求的是不可行的,但我会尽量做到尽可能清楚。
我有一个用c编写的简单文件。当我执行它时,我通过命令行传递一个字符串并将其存储在main函数中的局部变量中。
内存中的字符串以exledcimal转换,如下所示:
ES。主要ABCDEFGH 在堆栈中我们将看到0x44434241 0x48474645
逆问题怎么样?我想找到一个字符串(或数字),使内存以一种方式出现,即0xab640e17 0x45b2c78a(任意十六进制值)
考虑到我想通过命令行完成所有这些,没有代码改进!这样做有没有特殊的命令或转义字符?
谢谢,我希望它足够清楚:/
可能的解决方案
也许通过这个:perl -e 'print "\xab\x64\x0e\x17\x45\xb2\xc7\x8a"'
答案 0 :(得分:4)
您可以在C字符串中转义文字十六进制值,如下所示:
const char * s = "\xab\x64\x0e\x17\x45\xb2\xc7\x8a";
或者你可以像这样直接使用十六进制值:
const unsigned char s[8] = { 0xab, 0x64, 0x0e, 0x17, 0x45, 0xb2, 0xc7, 0x8a };
(如果你实际上不需要它,它还具有不产生尾随0x00的优点)。
答案 1 :(得分:0)
哦,我想你只是在找ASCII table。只需查找每个十六进制值并获取相应的字符。不幸的是,0x7F以上的十六进制数字具有与机器相关的ASCII表示,而一些较低的值不可打印。