在研究使 Linux 幀緩衝區完全變黑的方法時,我偶然發現了以下內容,我希望得到解釋:
- 命令列:
dd if=/dev/zero of=/dev/fb0
導致完全黑色的幀緩衝區 - Python:
Path('/dev/fb0').write_bytes(FBSIZE * b"0")
結果完全灰色的幀緩衝區
使用 b"0" 我可以使幀緩衝區變淺或變深灰色,但永遠不會完全黑色。
它的結果/dev/zero
與 Python 中的不一樣嗎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