Isso é bem simples em Python. Você pode iniciar o interpretador interativo apenas digitando python
e fazer algo assim:
>>> open("test.bin", "wb").write("")
'wb'
significa "abrir o arquivo para gravar dados binários para ele", simplesmente abrindo o arquivo com w
assumirá que você quer escrever texto para ele.
Note que estes são números octal ( is
0x1a
, ou 26)! Eles também podem ser hexadecimais ( \xff
), e você pode economizar algumas digitações fazendo algo assim:
>>> "\x00" * 4 + "\x09"
'\x00\x00\x00\x00\x09'
A precedência normal do operador se aplica.
Para mais dados, você pode usar listas de inteiros decimais - que eu acho mais fáceis de ler e digitar:
>>> d = [1, 2, 3, 4, 5]
>>> ''.join(chr(i) for i in d)
'\x01\x02\x03\x04\x05'
Se preferir usar python3
, você usaria bytes()
da seguinte forma:
>>> bytes([1, 2, 3, 4, 5])
Claro que 'aritmética' funciona como você esperaria:
>>> [1, 2, 3] * 2 + [9] * 4 + range(4)
[1, 2, 3, 1, 2, 3, 9, 9, 9, 9, 0, 1, 2, 3]
>>> range(10, 0, -3)
[10, 7, 4, 1]
Literais binários, orais e hexadecimais são escritos assim:
0b1100 == 0o14 == 12 == 0xc
(ou 014
, se você preferir)
Se você quiser fazer algumas coisas complicadas, abra o arquivo primeiro e, em seguida, escreva-o gradualmente:
>>> f = open("test.bin", "wb")
>>> f.write("\xff" * 100)
>>> for i in range(10):
... f.write("\xff\xfa\x03")
...
>>> f.close()
E se você quiser fazer o script, você pode usar a opção -c
para invocar o código diretamente da linha de comando:
python -c "open('test.bin', 'wb').write(''.join(chr(i) for i in [1, 2, 3]))"