gpt4 book ai didi

unix - Unix hexdump 中的字节序

转载 作者:行者123 更新时间:2023-12-04 12:15:01 30 4
gpt4 key购买 nike

以下 *nix 命令将 IP 和端口 (127.0.0.1:80) 的十六进制表示通过管道传输到 hexdump 命令中。

printf "\x7F\x00\x00\x01\x00\x50" | hexdump -e '3/1 "%u." /1 "%u:" 1/2 "%u" "\n"'

-e 标志允许以任意格式解析输入。在这种情况下,我们将 IP 的前三个八位字节解析为无符号十进制后跟一个点。最后一个八位字节也被解析为一个无符号十进制,但后面跟着一个冒号。最后——这就是问题所在——端口的 2 个字节被解析为单个无符号十进制,后跟一个换行符。

根据执行此命令的系统的字节顺序,结果会有所不同。 big-endian 系统将正确显示端口 80;而小端系统将显示端口 20480。

有什么方法可以操作 hexdump 以了解字节序,同时仍然允许通过 -e 指定任意格式?

最佳答案

我不知道它可以用 hexdump 完成,但它很容易
在 perl 中:

$ printf '\x00\x50' | perl -nE '说解压“S>”'
80
$ printf '\x00\x50' | perl -nE '说解包“S<”'
20480

您可以调整它以获得您想要的格式。 ('说'
需要 perl 5.10。使用打印 perl < 5.10)

(为那些希望投票的人澄清,因为我没有
“回答问题”。我建议 OP 替换
使用 perl 进行十六进制转储。如果必须,请投反对票。)

关于unix - Unix hexdump 中的字节序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1771663/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com