![b“0”与/dev/zero 之间的区别](https://linux22.com/image/1604305/b%E2%80%9C0%E2%80%9D%E4%B8%8E%2Fdev%2Fzero%20%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB.png)
在我研究如何使我的 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