问题描述
我下面有一个普通的C程序,它将int作为输入并将内存布局转储到终端:
# cat foo.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
int i,foo = atoi(argv[argc-1]);
unsigned char *c = (void*)&foo;
for (i = 0; i < 4; i++)
printf("%02x ",c[i]);
printf("\n");
return 0;
}
例如:
# ./foo 1
01 00 00 00
我完全需要这样的格式,即用空格分隔的十六进制转储和本机字节序(换句话说,十进制如何存储在内存中)。
是否有一种方法可以在例如ash?我到目前为止得到的最接近的是:
# echo 1 | xargs printf "%08x\n" | sed 's/../& /g'
00 00 00 01
但是可以看出,它会打印十六进制值,但不会打印出它在小字节序中如何驻留在内存中。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)