Zahlen umwandeln DEZ->OCT/HEX
Lukas
- perl
Hallo
Es gibt befehle, Octal- oder Hexardezimalzahlen in Dezimalzahlen umzuwandeln... gibt es auch einen umgekehrten befehl?
Oder sonst eine möglichkeit zahlen (speziell IP) zu "verschlüsseln" und wieder zu entschlüsseln?
Danke
Lukas
gibt es auch einen umgekehrten befehl?
Ich habe es nicht ausprobiert, aber probier mal
$ergebnisString = sprintf("%o", $string);
$ergebnisString = sprintf("%x", $string);
#für hexadezimale Ziffern
Oder sonst eine möglichkeit zahlen (speziell IP) zu "verschlüsseln" und wieder zu entschlüsseln?
Wie wärs denn mit crypt, md5, ...?
Hallo
Es gibt befehle, Octal- oder Hexardezimalzahlen in Dezimalzahlen umzuwandeln... gibt es auch einen umgekehrten befehl?
Oder sonst eine möglichkeit zahlen (speziell IP) zu "verschlüsseln" und wieder zu entschlüsseln?
Danke
Lukas
Hi Lukas,
es gibt da die sprintf Funktion, die im prinzip genauso arbeitet wie printf, nur dass sie keine Ausgabe erzeugt, sondern man mit ihr das Ergebnis einer Variablen zuweisen kann. Probier mal folgenden Codeabschnitt:
my $dec = 255;
my $hex = sprintf "%x", $dec;
my $oct = sprintf "%o", $dec;
print "dezimal: ".$dec."\nhexadezimal: ".$hex."\noktal: ".$oct."\n";
Als ersten Parameter erwartet sprintf eine Schablone für die Ausgabe, wobei Feldplatzhalter durch ein % eingeleitet werden und die darauffolgenden Buchstaben die Art der Darstellung bestimmen.(s.u.)
Der nächste Parameter ist eine Liste mit den Werten in der Reihenfolge der Felder in der Schablone, die durch sie maskiert werden sollen.
Nochmal zu den Buchstabencodes:
x für hexadezimale Ganzzahlen (integer)
X für hexadezimale Ganzzahlen mit Großbuchstaben (integer)
lx für lange hexadezimale Ganzzahlen (long)
o für oktale Ganzzahlen (integer)
lo für lange oktale Ganzzahlen (long)
d für dezimale Ganzzahlen (integer)
ld für lange oktale Ganzzahlen (long)
Es gibt noch ein paar andere Buchstabencodes, nicht nur für Zahlen. Such einfach mal in einer online Perl-Doku nach sprintf oder printf.
Viele Grüße
M. Budde