
Em minha pesquisa sobre uma maneira de deixar meu framebuffer do Linux completamente preto, me deparei com o seguinte, para o qual estou procurando uma explicação:
- linha de comando:
dd if=/dev/zero of=/dev/fb0
resulta em um framebuffer completamente preto - Python:
Path('/dev/fb0').write_bytes(FBSIZE * b"0")
resulta em uma solução completamentecinzaSuavizador de quadros
Brincando com o b"0" eu poderia deixar o framebuffer cinza mais claro ou mais escuro, mas nunca completamente preto.
O que resulta disso /dev/zero
não é o mesmo que b"0"
em Python?
(Só para completar, acabei usando setterm --clear all
, mas esse fenômeno continua me incomodando.)
Qualquer visão sobre isso seria apreciada. Obrigado!
Responder1
Seu uso b'0'
está incorreto - este é o "caractere zero"- como no número ou valor ASCII 0x30
/ 48
... daí o cinza. O que você realmente quer é o literal"valor zero", muitas vezes referido como"nulo", ou valor ASCII 0x00
/ 0
.
Para conseguir isso, tente usar a sequência de escape b'\0'
ou b'\x00'
.
O que você está usando atualmente também pode ser alcançado usando a sequência de escape b'\x30'
.
$ python3 -c 'from pathlib import Path; Path("test.bin").write_bytes(8 * b"0")'
$ hexdump -Cv < test.bin
00000000 30 30 30 30 30 30 30 30 |00000000|
00000008
$ python3 -c 'from pathlib import Path; Path("test.bin").write_bytes(8 * b"\x00")'
$ hexdump -Cv < test.bin
00000000 00 00 00 00 00 00 00 00 |........|
00000008
$ python3 -c 'from pathlib import Path; Path("test.bin").write_bytes(b"Hello012")'
$ hexdump -Cv < test.bin
00000000 48 65 6c 6c 6f 30 31 32 |Hello012|
00000008