내 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'
올바르지 않습니다. 이것은 "문자 0개" - 숫자 또는 ASCII 값과 동일 0x30
/ 48
... 따라서 회색입니다. 실제로 원하는 것은 리터럴입니다. "0 값", 흔히 "라고 불린다.널" 또는 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