以下*nix命令将IP和端口(127.0.0.1:80)的十六进制表示通过管道输入到hexdump命令中。
-e标志允许使用任意格式解析输入。在本例中,我们将IP的前三个八位字节解析为无符号十进制数,后跟一个点。最后一个八位字节也被解析为无符号十进制数,但后面跟着一个冒号。最后 -- 这就是问题所在 -- 端口的2个字节被解析为单个无符号十进制数,后面跟着一个换行符。
根据执行此命令的系统的字节序不同,结果会有所不同。大端系统将正确显示端口80;而小端系统将显示端口20480。
是否有办法在保持通过-e进行任意格式规定的同时,使hexdump能够识别字节序?
printf "\x7F\x00\x00\x01\x00\x50" | hexdump -e '3/1 "%u." /1 "%u:" 1/2 "%u" "\n"'
-e标志允许使用任意格式解析输入。在本例中,我们将IP的前三个八位字节解析为无符号十进制数,后跟一个点。最后一个八位字节也被解析为无符号十进制数,但后面跟着一个冒号。最后 -- 这就是问题所在 -- 端口的2个字节被解析为单个无符号十进制数,后面跟着一个换行符。
根据执行此命令的系统的字节序不同,结果会有所不同。大端系统将正确显示端口80;而小端系统将显示端口20480。
是否有办法在保持通过-e进行任意格式规定的同时,使hexdump能够识别字节序?