MrWurf: Hexzahl -> Binärzahl

Hallo,

ich möchte aus einer Hexadezimalzahl eine Binärzahl machen.
Die hex-Funktion liefert ja nur Dezimalzahlen. Da gibts doch sicher eine brauchbare Funktion oder Modul, oder?

thx
MrWurf

  1. Tach,

    ich möchte aus einer Hexadezimalzahl eine Binärzahl machen.
    Die hex-Funktion liefert ja nur Dezimalzahlen. Da gibts doch sicher eine brauchbare Funktion oder Modul, oder?

    Idee: Die entsprechenden Nibbles in einem Array ablegen und dann einfach Stelle für Stelle durchgehen.

    mfg
    Woodfighter

    1. hallo Woodfighter,

      ok, ist auch eine Variante. Kann mir aber nicht vorstellen, dass ich der erste mit diesem Problem bin und es kein passendes Modul gibt.
      Immerhin geht es hier um Perl.

      Ich habe inzwischen folgenden schmutzigen Trick gefunden:

      sub dec2bin {
          my $str = unpack("B32", pack("N", shift));
          return $str;
      }
      sub bin2dec {
          return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
      }

      (siehe auch perldoc -f pack)

      funktioniert nur leider nicht mit mehr als 32 Bit.

      Gruß
      MrWurf

      1. Tach,

        ok, ist auch eine Variante. Kann mir aber nicht vorstellen, dass ich der erste mit diesem Problem bin und es kein passendes Modul gibt.

        ich halte das Problem für dermaßen simpel, dass ein Modul dafür wohl stark übertrieben wäre. Aus der Perl-Doku:

        "How do I convert from decimal to binary

        Using unpack;

        $bin = unpack("B*", pack("N", 3735928559));

        Using Bit::Vector:

        use Bit::Vector;
                $vec = Bit::Vector->new_Dec(32, -559038737);
                $bin = $vec->to_Bin();

        The remaining transformations (e.g. hex -> oct, bin -> hex, etc.) are left as an exercise to the inclined reader."

        Da ich Perl nur rudimentär "spreche", mußt du diese Übung wohl selber machen ;-)

        mfg
        Woodfighter