php hex in binär umwandeln und nibbles auswerten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php hex in binär umwandeln und nibbles auswerten

    Hallo,

    versuch gerade einen hexadezimalen String in binär umzuwandeln und dann die binären Nibbles auszuwerten:

    Folgender hex-String ist gegeben: "F03C"
    Wenn man das in binär umwandelt ergibt das lt. Taschenrechner: 1111000000111100

    Habe mit folgendem den String erst mal in hex gewandelt:
    $in_bitmap_bin = pack("H*", $in_bitmap);

    Wie kann ich nun am besten auswerten, welche Bits gesetzt sind. Gehen wir mal davon aus, dass es rechts mit 1 beginnt.

    Also:
    1 -> nicht gesetzt
    2 -> nicht gesetzt
    3 -> gesetzt
    4 -> gesetzt
    usw.

    Wer kann mir helfen ??

    dankeschön

  • #2
    Re: php hex in binär umwandeln und nibbles auswerten

    Original geschrieben von wallnerm
    Wie kann ich nun am besten auswerten, welche Bits gesetzt sind.
    PHP-Code:
    $binaerString '1111000000111100';
    for(
    $i=0,$l=strlen($binaerString); $i<$l$i++) {
       echo 
    'Bit '.($l-$i).' ist'.($binaerString{$i} ? '' ' nicht')." gesetzt<br />\n";

    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      gute idee, aber geht noch nicht ganz

      Hab das jetzt übernommen. wenn man den binären string vorgibt gehts, aber bei der Wandlung hex in bin stimmt noch was nicht.

      PHP-Code:
      // in binär wandeln
      $in_bitmap_bin pack("H*""F03C");

      // Schleife
      for($i=0,$l=strlen($in_bitmap_bin); $i<$l$i++) 
      {
         echo 
      'Bit '.($l-$i).' ist'.($in_bitmap_bin{$i} ? '' ' nicht')." gesetzt<br />\n";

      Hier kommt dann:

      Bit 2 ist gesetzt
      Bit 1 ist gesetzt

      heraus.
      Das stimmt ja allein von der Länge strlen nicht. 4 Hexzeichen müssen ja 16 Bits geben.

      Kommentar


      • #4
        hallo?! noch nie was von bit operatoren gehört?!
        also mal ehrlich! diese methode gehört verboten! (sorry)

        PHP-Code:
        function bitisset($num, &$field) {
            return (
        $field & (<< ($num 1)));

        gibt true zurück wenn das $num-te bit in $field gesetzt is sonst natürlich false.

        ob man der funktion jetzt ne hexzahl übergibt oder ne dezimal is egal.
        aber achtung: hexzahl ist nicht hexstring!

        Kommentar


        • #5
          sorry

          hab leider noch nie was mit binären daten oder konvertierungen gemacht.
          Je praktischer die Lösung umso besser:

          Wie geht das denn dann mit Strings ?
          Es fehlt mir dann immer noch an den Konvertierungen

          PHP-Code:
          // Funktionsdefinition für bitisset
          function bitisset($num, &$field) {
          return (
          $field & (<< ($num 1)));
          }

          // Ursprungsstring
          $in_message "0350F03C000020808081F0F74"

          // bitmap wird aus dem Ursprunsstring geholt ab F03C...
          $in_bitmap substr($in_message,16);

          // Feststellen welche Bits gesetzt sind im ersten Halbbyte
          echo bitisset(1$in_bitmap); 

          Kommentar


          • #6
            PHP-Code:
            // Funktionsdefinition für bitisset
            function bitisset($num, &$field) {
            return (
            $field & (<< ($num 1)));
            }

            // Ursprungsstring
            $in_message "0350F03C000020808081F0F74"

            // bitmap wird aus dem Ursprunsstring geholt ab F03C...
            $in_bitmap substr($in_message,16);

            // hex in dezimal konvertieren
            $in_bitmap base_convert($in_bitmap1610);

            // Feststellen welche Bits gesetzt sind im ersten Halbbyte
            echo bitisset(1$in_bitmap); 
            aber was willst du eigendlich machen?

            Kommentar


            • #7
              Original geschrieben von MarkusW
              hallo?! noch nie was von bit operatoren gehört?!
              Doch, klar.
              aber achtung: hexzahl ist nicht hexstring!
              Eben deshalb hatte ich mein Beispiel ja so gewählt - weil ich davon ausging, dass er wirklich mit seinem Binärstring weiterarbeiten will ...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X