Linux shell:将IP写入二进制文件

使用灰,我有一个IP地址作为一个variables

IP_ADDR = 192.168.1.234

我想写4个字节到一个二进制文件,然后重新读取它们,并重新构buildIPstring。

我有以下的工作解决scheme,但它似乎很hacky – 有什么更好的build议?

写:

IP_ADDR=192.168.1.234 serialHex=`printf '%02X' ${IP_ADDR//./ } | sed s/'\(..\)'/'\\\\x\1'/g` echo -n -e $serialHex | dd bs=1 of=/path/to/file seek=19 &> /dev/null 

注意seek = 19表示二进制文件(在字节19)写入的位置

读:

 hexValues=`od -j 19 --read-bytes=4 --address-radix=n -t x1 /path/to/file` set $hexValues for w; do echo -n "$((0x$w))."; done | sed s/.$// 

 function ip_write { local FILE=$1 IP=$2 NUMS T IFS=. read -a NUMS <<< "$IP" printf -v T '\\x%x\\x%x\\x%x\\x%x' "${NUMS[@]}" printf "$T" > "$FILE" } function ip_read { local FILE=$1 NUMS read -a NUMS < <(exec od -N4 -An -tu1 "$FILE") local IFS=. IP="${NUMS[*]}" } 

用法示例:

 # Saves IP to file: > ip_write ip.txt 10.0.0.1 > hexdump -C ip.txt 00000000 0a 00 00 01 |....| # Reads IP from file: > ip_read ip.txt > echo "$IP" 10.0.0.1