Alinghi: Perl sort hexnumber

Hi zusammen,

kann mir jemand verraten, wie ich hexadezimal sortieren kann mit perl?

Quasi sowas wie hier ...

sort numerically ascending

@articles = sort {$a <=> $b} @files;
... bloss eben mit hexzahlen.

Danke.

ciao,
Alinghi

  1. Moin!

    kann mir jemand verraten, wie ich hexadezimal sortieren kann mit perl?

    Genauso wie Dezimalzahlen: Als Zahl. Mach aus dem Hex eine Integer, der sortiert sich dann fast von selbst. Und für die Ausgabe formatierst du ihn mit printf als Hex.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hi,

      Moin!

      kann mir jemand verraten, wie ich hexadezimal sortieren kann mit perl?

      Genauso wie Dezimalzahlen: Als Zahl. Mach aus dem Hex eine Integer, der sortiert sich dann fast von selbst. Und für die Ausgabe formatierst du ihn mit printf als Hex.

      my @alp_sorted = sort { lc($a) cmp lc($b) } @unsorted;

      So tut es auch. Danke

      ciao,
      Alinghi

      1. Hi,

        my @unsorted = ( "10", "A", "A0" );

        my @alp_sorted = sort { lc($a) cmp lc($b) } @unsorted;

        ==> @alp_sorted ist ("A", "A0", "10") bzw. dezimal (10, 160, 16).

        Deine Methode funktioniert nur, wenn Deine Strings alle dieselbe Stellenzahl haben (also im Beispiel ("10", "0a", "A0") statt ("10", "a", "a0"))

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hallo,

    kann mir jemand verraten, wie ich hexadezimal sortieren kann mit perl?

    hex() ist Dein Freund:

    hex EXPR
        hex     Interprets EXPR as a hex string and returns the corresponding
                value. (To convert strings that might start with either 0, 0x,
                or 0b, see the oct entry elsewhere in this document.) If EXPR is
                omitted, uses "$_".

    print hex '0xAf'; # prints '175'
                    print hex 'aF';   # same

    Hex strings may only represent integers. Strings that would
                cause integer overflow trigger a warning.

    so also
    sort { hex($a) <=> hex($b) } @hexn_array

    Viele Grüße,
    Horst Haselhuhn