使用灰,我有一个IP地址作为变量Linux的shell:写IP二进制文件
IP_ADDR=192.168.1.234
我想写的4个字节的二进制文件,后来重读他们和改革IP字符串。
我有以下的工作解决方案,但它似乎很hacky - 任何更好的建议?
写:
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
注寻求= 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/.$//
*“Note seek = 19 ...'* - 今天你不在乎,但如果你想要一个C程序读取这个文件,那么你应该提前计划并将这个32位值对齐一个32位对齐(例如,使用字节偏移20)。应该对齐多字节二进制数据以便于读入数据结构,尤其是在RISC拱门上。 – sawdust