Darstellung von Zeichen
Tom
- php
Hello,
ich war eben etwas erstaunt:
$id = str_pad($zahl,10,chr(0),STR_PAD_LEFT);
ist nicht das Gleiche wie
$id = str_pad($zahl,10,0x0,STR_PAD_LEFT);
Wie kann man denn, außer mit chr(), noch ASCII-Zeichen im Editor über Ordinalzahl angeben?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
$id = str_pad($zahl,10,chr(0),STR_PAD_LEFT);
ist nicht das Gleiche wie
$id = str_pad($zahl,10,0x0,STR_PAD_LEFT);
$id = str_pad($zahl,10,"\x0");
Geht also nicht ohne Doppelhäkchen, oder?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
$id = str_pad($zahl,10,chr(0),STR_PAD_LEFT);
ist nicht das Gleiche wie
$id = str_pad($zahl,10,0x0,STR_PAD_LEFT);
$id = str_pad($zahl,10,"\x0");
Geht also nicht ohne Doppelhäkchen, oder?
»0x0« bedeutet etwas anderes als »"\x0"«.
»0x0« bedeutet int(0). Darüber lassen sich also Integer-Zahlen in ihrer hexadezimalen Schreibweise notieren.
Wenn dieser Integer wie hier in einen String umgewandelt wird (weil der dritte Parameter von str_pad ein String sein muss), kommt der String »0« heraus. Das bedeutet ein Oktett mit dem Wert 0x30 (in ASCII die arabische Ziffer Null). Dieser String kann auch direkt mit »"\x30"« oder einfach »"0"« oder »'0'« usw. notiert werden.
»chr(0)« liefert einen String mit dem Oktett 0x0 (in ASCII das Steuerzeichen NUL). Das ist äquivalent zur Notation »"\x0"«, nicht aber äquivalent zur Notation »0x0« (auch nicht nach der Typkonvertierung).
Mathias
Hello,
»0x0« bedeutet etwas anderes als »"\x0"«.
»0x0« bedeutet int(0). Darüber lassen sich also Integer-Zahlen in ihrer hexadezimalen Schreibweise notieren.
Wenn dieser Integer wie hier in einen String umgewandelt wird (weil der dritte Parameter von str_pad ein String sein muss), kommt der String »0« heraus. Das bedeutet ein Oktett mit dem Wert 0x30 (in ASCII die arabische Ziffer Null). Dieser String kann auch direkt mit »"\x30"« oder einfach »"0"« oder »'0'« usw. notiert werden.»chr(0)« liefert einen String mit dem Oktett 0x0 (in ASCII das Steuerzeichen NUL). Das ist äquivalent zur Notation »"\x0"«, nicht aber äquivalent zur Notation »0x0« (auch nicht nach der
Typkonvertierung).
Danke. Ja das wurde mir dann auch klar. Ich bin es eben noch aus Pascal gewohnt, da einfach #13#10 hinzuschreiben, und der Compiler ersetzt das dann gegen die Oktette 0D 0A.
War schon etwas spät gestern gestern.
Herauskommen sollte das Zeichen NUL, da ich für den Bau von Records in Random-Access-Dateien die Zeichenlänge auffüllen muss. Es klappt inzwischen auch vorzüglich, vorwärts wie rückwärts.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom