php hex in binär umwandeln und nibbles auswerten

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.

    Comment


    • #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.

      Comment


      • #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!

        Comment


        • #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); 

          Comment


          • #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?

            Comment


            • #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.

              Comment

              Working...
              X