将十六进制转换为八位字节格式

时间:2010-10-26 13:25:53

标签: unix networking type-conversion

我的机器的ifconfig输出如下:

:~ shell$ ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 00:25:bc:e7:39:6a 
    inet6 fe80::225:bcff:fee7:396a%en0 prefixlen 64 scopeid 0x4 
    inet 10.170.133.45 netmask 0xffffff00 broadcast 10.170.133.255
    media: autoselect (100baseTX <full-duplex>)
    status: active

我知道网络掩码0xffffff00是255.255.255.0的十六进制表示。

但是将字符串转换为八位字节格式的正确方法是什么?

你能推荐一些unix命令或shell脚本吗?

1 个答案:

答案 0 :(得分:1)

说你已经把那个十六进制数字变成了一个变量

$ s="0xffffff00"
$ p="${s:0:2}"
$ printf "%d.%d.%d.%d\n" ${p}${s:2:2} ${p}${s:4:2} ${p}${s:6:2} ${p}${s:8:2}
255.255.255.0