微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

shell:将十进制转换为本地十六进制数字

如何解决shell:将十进制转换为本地十六进制数字

我下面有一个普通的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 举报,一经查实,本站将立刻删除。