Nullcharakter

Das Nullcharakter (Auch Null -Terminator) ist ein Steuerzeichen mit dem Wert Null.[1][2][3][4] Es ist in vielen vorhanden Zeichensätze, einschließlich der von der definierten Baudot und Ita2 Codes, ISO/IEC 646 (oder ASCII), das C0 -Kontrollcode, das Universal codiertes Zeichensatz (oder Unicode), und Ebcdic. Es ist in fast allen Mainstream erhältlich Programmiersprachen.[5] Es wird oft als abgekürzt wie Nul (oder NULLobwohl in einigen Kontexten dieser Begriff für die verwendet wird Null Zeiger). In 8-Bit-Codes ist es als a bekannt Null -Byte.

Die ursprüngliche Bedeutung dieses Charakters war wie NOP- Wenn ein an eine gesendet wird Drucker oder ein TerminalEs hat keine Auswirkung (einige Terminals zeigen es jedoch fälschlicherweise als Platz). Wenn elektromechanisch Teleprinter wurden als Computerausgabegeräte verwendet, ein oder mehrere Nullzeichen wurden am Ende jeder gedruckten Linie gesendet, damit der Mechanismus die erste Druckposition in der nächsten Zeile zurückkehrt. An StempelbandDas Charakter wird ohne Löcher dargestellt, sodass ein neues nicht mit Nullzeichen gefüllter Band mit Nullzeichen gefüllt ist. Oft kann Text in einem reservierten Raum von Nullzeichen eingefügt werden, indem die neuen Zeichen in das Klebeband über die Nulls gestanzt werden.

Heute hat der Charakter viel mehr Bedeutung in der Programmiersprache C und seine Derivate und in vielen Datenformaten, in denen es als reserviertes Zeichen dient, das verwendet wird, um das Ende von a zu bezeichnen Saite,[6] oft als a genannt NULL-terminierte Zeichenfolge.[7] Dadurch kann die Zeichenfolge nur mit dem Overhead von einem Byte eine Länge sein. Die Alternative zum Speichern einer Anzahl erfordert entweder eine Stringlängengrenze von 255 oder einen Overhead von mehr als einem Byte (es gibt andere Vor-/Nachteile in der NULL-terminierte Zeichenfolge Artikel).

Darstellung

Der Nullcharakter wird oft als der dargestellt Fluchtabfolge \0 in Quellcode , String -Literale oder Charakterkonstanten.[8] In vielen Sprachen (wie c, was diese Notation einführte), ist keine separate Fluchtsequenz, sondern eine Oktal -Flucht -Sequenz mit einer einzigen Oktal Ziffer 0; als Konsequenz, \0 darf keine der Ziffern folgen 0 durch 7; Andernfalls wird es als Beginn einer längeren Oktal -Fluchtsequenz interpretiert.[9] Andere Fluchtsequenzen, die in verschiedenen Sprachen verwendet werden, sind \000, \ x00, \ z, oder \ u0000. Ein Nullcharakter kann in a platziert werden URL mit dem prozentualer Code %00.

Die Fähigkeit, ein Nullzeichen darzustellen, bedeutet nicht immer, dass die resultierende Zeichenfolge korrekt interpretiert wird, da viele Programme den Null als Ende der Zeichenfolge betrachten. Somit die Fähigkeit, es zu tippen (im Fall von Deaktivierte Benutzereingabe) schafft a Verletzlichkeit bekannt als Null -Byte -Injektion und kann zu Sicherheitsdaten führen.[10]

Im Pflege Notation Der Nullcharakter ist ^@. Auf einigen Tastaturen kann man in einen Nullzeichen eintreten, indem man sich gedrückt hat Strg und drücken @ (Auf US -Layouts nur Strg+2 Wird oft funktionieren, es besteht keine Notwendigkeit für ⇧ Verschiebung um das @ Zeichen zu bekommen).

In der Dokumentation wird das Nullzeichen manchmal als Einzel-em-Wuttesymbol mit den Buchstaben "NUL". Im UnicodeEs gibt ein Zeichen mit einer entsprechenden Glyphe zur visuellen Darstellung des Nullzeichens, Symbol für Null, U+2400 (␀) - nicht mit dem tatsächlichen Null -Charakter U+0000 zu verwechseln.

Codierung

In allen modernen Zeichensätzen hat das Null -Zeichen einen Codepunktwert von Null. In den meisten Codierungen wird dies in eine einzelne Codeeinheit mit einem Nullwert übersetzt. Zum Beispiel in UTF-8 Es ist ein einzelnes Null -Byte. Allerdings in Modifiziert UTF-8 Das Nullzeichen wird als zwei Bytes codiert: 0xc0, 0x80. Dadurch kann das Byte mit dem Wert von Null, der jetzt nicht für ein Zeichen verwendet wird, als String -Terminator verwendet werden.

Probleme

Einige Leute, deren Name Null ist, haben Probleme mit Computersystemen.[11][12]

Verweise

  1. ^ ASCII -Format für den Netzwerkstausch. Ietf. Sek. 5.2. doi:10.17487/rfc0020. RFC 20. NUL (NULL): Der All-Zeros-Charakter, der die Zeitfüllung und die Medienfüllung erfüllen kann.
  2. ^ "Die Menge der Kontrollzeichen des ISO 646" (PDF). Sekretariat ISO/TC 97/SC 2. 1975-12-01. p. 4.4. Archiviert von das Original (PDF) Am 2014-05-12. Position: 0/0, Name: Null, Abkürzung: NUL
  3. ^ "Unicode -Zeichen 'null' (u+0000)". Abgerufen 2018-10-20.
  4. ^ "C0 -Kontrollen und Grundlatein" (PDF). Unicode -Konsortium. 2018. Abgerufen 2018-10-20.
  5. ^ "Ein Byte mit allen auf 0 gesetzten Bits, genannt die Nullcharakter, muss im grundlegenden Ausführungszeichen bestehen; Es wird verwendet, um ein Zeichen für Zeichen zu beenden. " - ANSI/ISO 9899: 1990 (ANSI C -Standard), Abschnitt 5.2.1
  6. ^ "EIN Saite ist eine zusammenhängende Abfolge von Zeichen, die von und einschließlich des ersten Nullzeichen beendet sind. "
  7. ^ Arbeitsentwurf, Standard für die Programmiersprache C ++ (PDF) (ISO 14882 Standard Arbeitsentwurf), ISO/IEC, 28. Februar 2011, p. 427, N3242 = 11-0012, abgerufen 27. Februar 2013, A NULL-terminierte Byte-Saiteoder ntb Nullcharakter beenden); Kein anderes Element in der Sequenz hat den Wert Null.
  8. ^ Kernighan und Ritchie, C, p. 38
  9. ^ Im Yaml Diese Kombination ist a separate Fluchtsequenz.
  10. ^ Null -Byte -Injektion WASC -Bedrohungsklassifizierung Null Byte Angriffsabschnitt.
  11. ^ "Hallo, ich bin Mr. Null. Mein Name macht mich für Computer unsichtbar". VERDRAHTET. ISSN 1059-1028. Abgerufen 2021-09-13.
  12. ^ Howitt, Chris Baraniuk / Bilder von Olivia. "Diese unglücklichen Leute haben Namen, die Computer brechen". BBC. Abgerufen 2021-09-13.{{}}: CS1 Wartung: URL-Status (Link)

Externe Links

  • Null -Byte -Injektion WASC -Bedrohungsklassifizierung Null Byte Angriffsabschnitt
  • Poison Null Byte Einführung Einführung in Nullify 9
  • Byteangriff