Превращение ascii-представления целого числа в двоичное 32-разрядное целое число с прямым порядком байтов легко с помощью perl, как уже отмечалось, а сохранение этого значения в файл - простое перенаправление оболочки:
$ num=5
$ perl -e "print pack('N', $num)" > outputfile.txt
$ xxd outputfile.txt
00000000: 0000 0005
Примечания:
- Замена переменной
$num
в данном примере выполняется оболочкой, а не самим perl. pack("N", value)
- это способ perl для преобразования value
в32-разрядное целое число с прямым порядком байтов.
Для полноты, версия с прямым порядком байтов:
$ perl -e 'print pack("V", 5)' | xxd
00000000: 0500 0000
Чтение из файла немного сложнее, посколькуэто двоичные данные, а не строковый текст.Вы должны прочитать все 4 байта файла одновременно, независимо от того, что они есть.К счастью, Perl также делает это легко:
$ perl -0777 -nE 'say unpack("N", $_)' outputfile.txt
5
Аргумент -0777
- это идиоматический способ чтения всего файла за один раз в сочетании с -n
, который читает файлы или стандартный ввод, вызывая остальную частьскрипт (предоставляется -E
) для каждого чанка (обычно это строка, но весь файл в этом случае)