How to create binary file using Bash?

只谈情不闲聊 提交于 2019-12-10 12:35:13

问题


How can I create a binary file with consequent binary values in bash?

like:

$ hexdump testfile
0000000 0100 0302 0504 0706 0908 0b0a 0d0c 0f0e
0000010 1110 1312 1514 1716 1918 1b1a 1d1c 1f1e
0000020 2120 2322 2524 2726 2928 2b2a 2d2c 2f2e
0000030 ....

In C, I do:

fd = open("testfile", O_RDWR | O_CREAT);
for (i=0; i< CONTENT_SIZE; i++)
{
    testBufOut[i] = i;
}

num_bytes_written = write(fd, testBufOut, CONTENT_SIZE);
close (fd);

this is what I wanted:

#! /bin/bash
i=0
while [ $i -lt 256 ]; do
    h=$(printf "%.2X\n" $i)
    echo "$h"| xxd -r -p
    i=$((i-1))
done

回答1:


There's only 1 byte you cannot pass as argument in bash command line: 0 For any other value, you can just redirect it. It's safe.

echo -n $'\x01' > binary.dat
echo -n $'\x02' >> binary.dat
...

For the value 0, there's another way to output it to a file

dd if=/dev/zero of=binary.dat bs=1c count=1 

To append it to file, use

dd if=/dev/zero oflag=append conv=notrunc of=binary.dat bs=1c count=1



回答2:


Maybe you could take a look to xxd :

xxd : creates a hex dump of a given file or standard input. It can also convert a hex dump back to its original binary form.




回答3:


If you don't mind to not use an existing command and want to describe you data in a text file, you can use binmake that is a C++ program that you can compile and use like following:

First get and compile binmake (the binary will be in bin/):

$ git clone https://github.com/dadadel/binmake
$ cd binmake
$ make

Create your text file file.txt:

big-endian
00010203
04050607
# separated bytes not concerned by endianess
08 09 0a 0b 0c 0d 0e 0f

Generate your binary file file.bin:

$ ./binmake file.txt file.bin
$ hexdump file.bin
0000000 0100 0302 0504 0706 0908 0b0a 0d0c 0f0e               
0000008

Note: you can also use it with stdin/stdout




回答4:


use below command,

i=0; while [ $i -lt 256 ]; do echo -en '\x'$(printf "%0x" $i)''  >> binary.dat; i=$((i+1));  done


来源:https://stackoverflow.com/questions/8521240/how-to-create-binary-file-using-bash

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!