b“0”与/dev/zero 之间的区别

b“0”与/dev/zero 之间的区别

在我研究如何使我的 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

相关内容