Writing binary files with bash
Hello,
I’m trying to see if I’m able to write some binary file using bash. So, when writing a binary file you often want to write a number into binary format. I ended up with this simple function for writing numbers in little endian:
function num2bin() {
printf $(printf %.$(($2\*2))x\\\\n $1|
sed 's/\\(\[0-9a-f\]\[0-9a-f\]\\)/\\\\x\\1/g')|
awk -F '' '{ printf $4$3$2$1 }'
}
The first parameter is the number to write, the second is the number of bytes (up to 4). For example “num2bin 40 4” will output a 4-byte long string containing the number 40 in little endian.
How do we use it? I wrote an example script for creating a wav file with noise (according to wav specifications) that you can read here.
Let me know if you have a simpler version of the num2bin function.