Bash:将整数写入二进制文件

Dag*_*ang 13 linux bash shell

可能重复:
使用bash:将整数的位表示写入文件

我需要将文件的大小写入二进制文件.例如:

$ stat -c %s in.txt 
68187

$ stat -c %s in.txt >> out.bin
Run Code Online (Sandbox Code Playgroud)

而不是将"68187"字符串写入out.bin,我想将168187的4字节int表示写入out.bin.

如何将"68187"转换为4字节int?

Kar*_*ath 28

这就是我能想到的:

int=65534
printf "0: %.8x" $int | xxd -r -g0 >>file
Run Code Online (Sandbox Code Playgroud)

现在,根据字节顺序,您可能需要交换字节顺序:

printf "0: %.8x" $int | sed -E 's/0: (..)(..)(..)(..)/0: \4\3\2\1/' | xxd -r -g0 >>file
Run Code Online (Sandbox Code Playgroud)

示例(已解码,因此可见):

printf "0: %.8x" 65534 | sed -E 's/0: (..)(..)(..)(..)/0: \4\3\2\1/' | xxd -r -g0 | xxd
0000000: feff 0000                                ....
Run Code Online (Sandbox Code Playgroud)

这是对于unsigned int,如果int是有符号的并且值是负的,则必须计算二进制补码.简单的数学.