Linux フレームバッファを完全に黒くする方法を調べていたところ、次のようなことに遭遇しました。その説明を知りたいです。
- コマンドライン:
dd if=/dev/zero of=/dev/fb0
完全に黒いフレームバッファになります - Python:
Path('/dev/fb0').write_bytes(FBSIZE * b"0")
完全にグレーフレームバッファ
b"0" を操作すると、フレームバッファーを明るいグレーや暗いグレーにすることはできましたが、完全に黒にすることはできませんでした。
そこから何が出てくるのか、 Python の場合/dev/zero
と同じではないのでしょうかb"0"
?
(念のため、最終的には を使用しましたsetterm --clear all
が、この現象は私を悩ませ続けています。)
これに関して何かご意見がございましたら、ぜひお聞かせください。ありがとうございます!
答え1
の使い方がb'0'
間違っています。これは「ゼロ文字" - 数字、または ASCII 値0x30
/ 48
... のように灰色になっています。実際に必要なのはリテラル " です。ゼロ値「」とも呼ばれるゼロ"、または ASCII 値0x00
/ 0
。
これを取得するには、代わりにエスケープ シーケンスb'\0'
またはを使用してみてくださいb'\x00'
。
現在使用しているものは、エスケープ シーケンスを使用して実現することもできます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