Null 문자
Null characternull 문자(null terminator도 null terminator)는 값이 [1][2][3][4]0인 제어 문자입니다.Baudot 및 ITA2 코드, ISO/IEC 646(또는 ASCII), C0 제어 코드, Universal Coded Character Set(또는 Unicode) 및 EBCDIC에 의해 정의된 문자 집합을 비롯한 많은 문자 집합에 있습니다.거의 모든 주류 프로그래밍 [5]언어로 제공됩니다.NUL(또는 NULL)로 약칭되는 경우가 많습니다.단, 일부 컨텍스트에서는 NULL 포인터에 이 용어가 사용됩니다.8비트 코드에서는 늘바이트라고 불립니다
이 문자의 원래 의미는 NOP와 같았습니다.프린터나 단말기에 송신해도 효과가 없습니다(단, 일부 단말기는 스페이스로 잘못 표시됩니다).전기기계식 텔레프린터가 컴퓨터 출력 장치로 사용되었을 때, 각 인쇄 행의 끝에 하나 이상의 늘 문자가 전송되어 메커니즘이 다음 [citation needed]행의 첫 번째 인쇄 위치로 돌아갈 때까지의 시간이 주어졌습니다.천공테이프에서는 문자는 전혀 구멍이 없기 때문에 새로운 미개봉 테이프는 처음에는 늘 문자로 채워지고, 종종 늘 위에 있는 테이프에 새로운 문자를 삽입함으로써 늘 문자의 예약된 공간에 텍스트를 삽입할 수 있습니다.
오늘날 이 문자는 프로그래밍 언어 C와 그 파생어 및 많은 데이터 형식에서 훨씬 더 중요합니다. 여기서 [6]이 문자는 문자열의 끝을 나타내기 위해 사용되는 예약된 문자(종종 Null 종단 문자열)[7]로 사용됩니다.이것에 의해, 1 바이트의 오버헤드만을 가지는 임의의 길이의 스트링을 사용할 수 있습니다.카운트를 보존하려면 , 255 바이트의 스트링 길이 제한 또는1 바이트 이상의 오버헤드가 필요합니다(null 종단 문자열 문서에 기재되어 있는 그 외의 장점과 단점이 있습니다).
표현
늘 문자는 종종 이스케이프 시퀀스로 표시됩니다. \0
소스 코드, 문자열 리터럴 또는 문자 상수.[8]많은 언어(이 표기를 도입한 C 등)에서 이것은 개별 이스케이프 시퀀스가 아니라 단일 8진수 자리0의 8진수 이스케이프 시퀀스입니다.그 결과,\0
뒤에 숫자를 붙일 수 없습니다.0
통해.7
; 그 이외의 경우는 긴 8진수 이스케이프 [9]시퀀스의 시작으로 해석됩니다.다양한 언어로 사용되는 기타 이스케이프 시퀀스는 다음과 같습니다.\000
,\x00
,\z
, 또는\u0000
% 코드를 가진 URL에 null 문자를 넣을 수 있습니다. %00
.
많은 프로그램이 늘을 문자열의 끝이라고 생각하기 때문에 늘 문자를 나타낼 수 있다고 해서 반드시 결과 문자열이 올바르게 해석되는 것은 아닙니다.따라서 이를 입력하는 기능(체크되지 않은 사용자 입력의 경우)에 의해 늘바이트 주입이라고 하는 취약성이 생성되어 보안 [10]악용으로 이어질 수 있습니다.
캐럿 표기법에서 늘 문자는 다음과 같습니다.^@
일부 키보드에서는 누르기만 하면 Null 문자를 입력할 수 있습니다.Ctrl (미국 레이아웃에서는 +만 2누르면 되는 경우가 많기 때문에 @ 기호는 필요 없습니다).
문서에서는 Null 문자는 문자 "NUL"을 포함한 단일 Em 폭 기호로 표시되는 경우가 있습니다.Unicode에서는 Null 문자의 시각적 표현을 위해 대응하는 문자, Null 기호, U+2400())을 사용하여 실제 Null 문자, U+000000과 혼동하지 않도록 합니다.
부호화
현대의 모든 문자 집합에서 null 문자의 코드 포인트 값은 0입니다.대부분의 인코딩에서 이것은 값이 0인 단일 코드 단위로 변환됩니다.예를 들어 UTF-8에서는 1개의 0바이트입니다.단, Modified UTF-8에서는 늘 문자는 2바이트(0xC0, 0x80)로 부호화됩니다.이것에 의해, 값이 0인 바이트를 문자열 터미네이터로서 사용할 수 있게 됩니다.
문제
이름이 Null인 일부 사용자는 컴퓨터 [11][12]시스템에 문제가 있습니다.
레퍼런스
- ^ ASCII format for Network Interchange. IETF. sec. 5.2. doi:10.17487/RFC0020. RFC 20.
NUL (Null): The all-zeros character which may serve to accomplish time fill and media fill.
- ^ "The set of control characters of the ISO 646" (PDF). Secretariat ISO/TC 97/SC 2. 1975-12-01. p. 4.4. Archived from the original (PDF) on 2014-05-12.
Position: 0/0, Name: Null, Abbreviation: Nul
- ^ "Unicode Character 'NULL' (U+0000)". Retrieved 2018-10-20.
- ^ "C0 Controls and Basic Latin" (PDF). Unicode Consortium. 2018. Retrieved 2018-10-20.
- ^ "모든 비트가 0으로 설정된 바이트(늘 문자라고 함)는 기본 실행 문자 집합에 존재해야 합니다. 문자열 리터럴을 끝내기 위해 사용됩니다." — ANSI/ISO 9899:1990(ANSI C 표준), 섹션 5.2.1
- ^ "문자열은 첫 번째 늘 문자로 끝나는 연속된 문자열입니다." - ANSI/ISO 9899:1990(ANSI C 표준), 섹션 7.1.1
- ^ Working Draft, Standard for Programming Language C++ (PDF) (ISO 14882 standard working draft), ISO/IEC, 28 February 2011, p. 427, N3242=11-0012, retrieved 27 February 2013,
A null-terminated byte string, or NTBS, is a character sequence whose highest-addressed element with defined content has the value zero (the terminating null character); no other element in the sequence has the value zero.
- ^ Kernighan and Ritchie, C, 페이지 38
- ^ YAML에서는 이 조합은 개별 이스케이프 시퀀스입니다.
- ^ Null Byte Injection WASC Threat Classification Null Byte Attack 섹션.
- ^ "Hello, I'm Mr. Null. My Name Makes Me Invisible to Computers". WIRED. ISSN 1059-1028. Retrieved 2021-09-13.
- ^ Howitt, Chris Baraniuk / Images by Olivia. "These unlucky people have names that break computers". BBC. Retrieved 2021-09-13.
{{cite web}}
: CS1 maint :url-status (링크)