En mi investigación sobre una manera de hacer que mi framebuffer de Linux se vuelva completamente negro, me topé con lo siguiente para lo cual estoy buscando una explicación:
- línea de comando:
dd if=/dev/zero of=/dev/fb0
da como resultado un framebuffer completamente negro - Python:
Path('/dev/fb0').write_bytes(FBSIZE * b"0")
resulta en una completamentegrisbúfer de cuadros
Jugando con el b"0" podía hacer que el framebuffer fuera de un gris más claro o más oscuro, pero nunca completamente negro.
¿Lo que sale de /dev/zero
eso no es lo mismo que b"0"
en Python?
(Para completar, terminé usando setterm --clear all
, pero este fenómeno sigue molestándome).
Se agradecería cualquier idea al respecto. ¡Gracias!
Respuesta1
Su uso de b'0'
es incorrecto: este es el "carácter cero" - como en el número o valor ASCII 0x30
/ 48
... de ahí el gris. Lo que realmente quieres es el literal "valor cero", a menudo denominado "nulo", o valor ASCII 0x00
/ 0
.
Para conseguir esto, intente utilizar la secuencia de escape b'\0'
o b'\x00'
en su lugar.
Lo que estás usando actualmente también se puede lograr usando la secuencia 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