Ankündigung

Einklappen
Keine Ankündigung bisher.

0 integer zu byte umwandlung fehlerhaft

Einklappen

Neue Werbung 2019

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

  • 0 integer zu byte umwandlung fehlerhaft

    Hallo community,
    Ich hoffe ihr könnt mir mit diesem Problem helfen.
    Ich habe mir eine function gebaut, welche einem int zu bytes umwandel soll, nur jetzt das problem es kann keine 0 bytes erstellen.
    PHP-Code:
    function IntToBytes ($int) { $byte1 $int 255$byte2 = ($int >> 8) & 255$byte3 = ($int >> 16) & 255$byte4 = ($int >> 24) & 255; return chr($byte1) . chr($byte2) . chr($byte3) . chr($byte4); } 
    Wenn ich dort dann z.b eine 5 rein gebe bekomme ich als bytes {5, 32, 32, 32} allerdings müsste dies {5, 0, 0, 0} ergeben.
    Ich habe bereits eine art kleinen debug versucht, indem ich
    PHP-Code:
    chr(0
    und \0 versuchte, allerdings kommt beide male 32 raus.
    Ich hoffe ihr könnt mir helfen.

  • #2
    Warum so umständlich, wenn PHP das selbst kann?

    PHP-Code:
    <?php
    function intToByteArray($i) {
        return 
    unpack('C*'pack('L'$i));
    }

    var_dump(intToByteArray(5));

    /*
    Output:
    array(4) {
      [1]=>
      int(5)
      [2]=>
      int(0)
      [3]=>
      int(0)
      [4]=>
      int(0)
    }
    */

    Kommentar


    • #3
      Hallo!

      \0 ist ja ein "non printable character"
      Vermutlich wird bei der Ausgabe irgendwo das \0 zu \32 (=Leerzeichen)

      Grüße.

      Kommentar


      • #4
        Zitat von Timo5458 Beitrag anzeigen
        Wenn ich dort dann z.b eine 5 rein gebe bekomme ich als bytes {5, 32, 32, 32} allerdings müsste dies {5, 0, 0, 0} ergeben.
        Du irrst dich:

        PHP-Code:
        <?php

        function IntToBytes ($int) {
            
        $byte1 $int 255;
            
        $byte2 = ($int >> 8) & 255;
            
        $byte3 = ($int >> 16) & 255;
            
        $byte4 = ($int >> 24) & 255;
            return 
        chr($byte1) . chr($byte2) . chr($byte3) . chr($byte4);
        }

        $bytes IntToBytes(5);
        echo 
        bin2hex($bytes); // 05000000
        Code funktioniert wie erwartet. Die Fehlerursache muss außerhalb des Codes liegen.

        Kommentar

        Lädt...
        X