Null (znak)
Null lub NUL — znak sterujący o wartości liczbowej 0, informujący o braku informacji[1], służący jako znak wypełniający[2] w czasie lub na nośnikach danych[3][4]. Jest on dostępny w większości systemów kodowania znaków jak np. ASCII, EBCDIC lub Unikod oraz niemal we wszystkich głównych językach programowania.
Pierwotne znaczenie znaku null było podobne do instrukcji pustej. Wysyłanie go do drukarki lub terminalu nie powodowało wykonania żadnej czynności (chociaż niektóre terminale wyświetlały go nieprawidłowo jako odstęp). Na taśmach dziurkowanych wartość null była zapisywana jako obszar bez dziurek, stąd nowe taśmy były niejako z definicji wypełnione znakami null, a zarezerwowane przerwy na taśmach pozwalały na późniejsze „uzupełnienie” danych w miejscach gdzie pozostawiono znaki null.
Obecnie znak null ma znacznie większe znaczenie w języku C i językach pochodnych[5], jak również w wielu formatach danych, gdzie jego funkcją jest informacja o końcu danych tekstowych.
Zapis
edytujJęzyk C i pochodne
edytujW języku C znak null jest powszechnie zapisywany jako sekwencja specjalna \0
w stałej łańcuchowej lub znakowej w kodzie źródłowym. Nie jest to jednak oddzielna sekwencja specjalna, lecz raczej sekwencja specjalna w zapisie ósemkowym z jedną cyfrą 0, wobec czego za \0
nie można umieszczać cyfr od 0 do 7, gdyż to spowoduje ich interpretowanie jako dalszego ciągu w zapisie ósemkowym. Zapisy pochodne od pierwowzoru obejmują \000
, \x00
, \u0000
.
Język Pascal i pochodne
edytujW języku Pascal i pochodnych znak null można wprowadzić w następujące sposoby:
- sekwencja sterująca
^@
- sekwencja numeryczna dziesiętna
#0
- sekwencja numeryczna szesnastkowa
#$0
.
URL
edytujW adresie URL znak null można uzyskać przez %00
. Stosowanie takiego znaku może prowadzić do awarii lub nieprawidłowego działania niedostatecznie zabezpieczonych serwisów internetowych[6].
Przypisy
edytuj- ↑ Markowski, Rydzewski i Kruszyński 1989 ↓, s. 88.
- ↑ Cielątkowski i Porębski 1992 ↓, s. 373.
- ↑ RFC 20 ↓, 5.2 Control Characters.
- ↑ The set of control characters of the ISO 646, Secretariat ISO/TC 97/SC 2, 1 grudnia 1975, 4.4 [dostęp 2012-12-12] [zarchiwizowane z adresu 2012-07-29] (ang.).
- ↑ Grębosz 2000 ↓, s. 38-39.
- ↑ Null Byte Injection, WASC Threat Classification, 2010 [dostęp 2012-12-13] (ang.).
Bibliografia
edytuj- Janusz Cielątkowski , Wiesław Porębski , IBM PC dla każdego, Warszawa: Komputerowa Oficyna Wydawnicza „HELP”, 1992, ISBN 83-85137-27-0 .
- Jerzy Grębosz , Symfonia C++. Programowanie w języku C++ orientowane obiektowo, t. I, Oficyna Kallimach, 2000 .
- Andrzej Markowski , Andrzej Rydzewski , Henryk Kruszyński , Leksykon techniki mikrokomputerowej, seria: Mikrokomputery, Warszawa: Wydawnictwo Czasopism i Książek Technicznych NOT-SIGMA, 1989, ISBN 83-85001-28-X .
Linki zewnętrzne
edytuj- Vinton Gray Cerf, ASCII format for network interchange, STD 80, RFC 20, IETF, październik 1969, DOI: 10.17487/RFC0020, ISSN 2070-1721, OCLC 943595667 (ang.).