下面的* nix命令将IP和端口(127.0.0.1:80)的十六进制表示转换为hexdump命令。Unix中的字节顺序hexdump
printf "\x7F\x00\x00\x01\x00\x50" | hexdump -e '3/1 "%u." /1 "%u:" 1/2 "%u" "\n"'
-e标志允许任意格式解析输入。在这种情况下,我们将IP的前三个八位字节解析为无符号小数,后面跟着一个点。最后的八位组也被解析成一个无符号的十进制数,但后面跟着一个冒号。最后 - 这就是问题所在 - 端口的2个字节被解析为一个单一的无符号小数,然后是一个换行符。
根据执行此命令的系统的字节顺序,结果会有所不同。大端系统将正确显示端口80;而一个小端系统将显示端口20480.
有什么办法来操纵hexdump来了解endianness,同时仍然允许通过-e任意格式指定吗?
我认为如果平台是小端的,那么必须通过交换最后两个字节来准备输入是不可接受的,因为您问的是这个问题? – 2009-11-20 16:38:32
它看起来像一个字节交换将是必要的? – shrizza 2009-11-20 16:44:53