alligator: hex-Zahl mit 0 auffülen

Hi,

ich hab nen kleine Prob.
Ich hab ne Liste mit Hex-Zahlen und würde die gerne mit 4 Nullen auffüllen.
Versuch 1:
{
printf "%04d\n", $1 }
}
Geht nicht was ja auch logisch ist, da es ja keine Ganzzahl ist.

Versuch 2:
{
printf "%04s\n", $1 }
}
Geht auch nicht - warum -> keine Ahnung

Hat jemand ne Idee?
Danke.

cya
alligator

  1. Hi,

    Ich hab ne Liste mit Hex-Zahlen und würde die gerne mit 4 Nullen auffüllen.
    Versuch 1:
    {
    printf "%04d\n", $1 }
    }
    Geht nicht was ja auch logisch ist, da es ja keine Ganzzahl ist.

    Versuch 2:
    {
    printf "%04s\n", $1 }
    }
    Geht auch nicht - warum -> keine Ahnung

    Auch logisch, weil es ja auch kein String ist.

    Hat jemand ne Idee?

    verwende %x als Formatsymbol:

    my $zahl = 0x3f;

    printf("%4.4x\n",$zahl);

    Ausgabe: 003f

    mfG,
    steckl

  2. Hi aligator,

    nehmen wir mal an, Du willst, daß das Ergebnis immer aus 10 Zeichen besteht. Wenn die hex-Zahl kleiner als 10 Zeichen ist, dann soll von links her kommend die fehlenden Stellen mit "0" aufgefüllt werden.

    #!/usr/bin/perl

    $a = "a1b2";
    $b = length($a);

    print "0" x (10-$b) . $a . "\n";

    So, $a enthält die hex-Zahl, $b die Länge der hex-Zahl in Zeichen.

    print "0" x 5 --> schreibe 5 mal "0" --> "00000"

    Wenn das Skript also von 10 die Länge der Hex-Zahl abzieht, erhält es die Anzahl der "0", die es ausgeben soll. Danach wird die Hex-Zahl geschrieben und zum Schluß das "\n".

    Habe ich Dich richtig verstanden?

    see you later, alligator (sorry, aber das paßt gerade so schön)

    Hans