kostenloser Webspace werbefrei: lima-city


einzelnes Byte mit fread lesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. $Zahl = ord($Zahl);

    edit: siehe php.net, ist f?r so sachen recht gut...

    Beitrag ge?ndert am 24.12.2005 17:20 von pervamon
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi

    evntl. ist das die L?sung (?):

    $chr = "f";
    $binary = decbin(ord($chr));


    So wird hier als Beispiel der Buchstabe f in den binary-Wert umgewandelt ($binary enth?lt jetzt den Wert 1100110). Du hast zwar gesagt, das du den Dezimal-Wert ben?tigst, aber das w?re ja mit ord() gel?st. Ist es das, was Du brauchst?

    mfg,
    hr

    Beitrag ge?ndert am 24.12.2005 21:01 von heavyraptor
  4. Hi,

    es tut mir leid, aber ich verstehe nicht recht, was du gebrauchst ;).
    F?r ein Byte gibt es doch nur den ASCII-Integerwert oder den Binary-Integerwert. Es gibt garkein anderen. Vielleicht meinst du den Oktalwert? Das w?re auch ein Integer. Den k?nntest du mit decoct() umwandeln.
    Sonst f?llt mir leider nichts anderes ein ...

    mfg,
    hr
  5. OK.
    Ich versuche es mit einer neuen Idee :biggrin:

    Ich hoffe cih habs richtig verstanden:
    Du schreibst mit fread ein Zeichen in eine Variable. Du willst den Integerwert von 2 Byte (du liest jetzt 2 Byte, oder?).
    Dann kannst du doch f?r jedes Zeichen den Wert umrechnen:

    $str = "abc";
    $int_werte = array();
    for ($i = 0; $i < strlen($str); $i++) {
     $int_werte[] = ord($str[$i]);
    }


    Jetzt wird ja jedes Zeichen umgerechnet und jetzt hast du ein array der jeden Code enth?llt.
    Ist es das? Ich galbe nicht, ich bin mir fast sicher, das es das nicht ist...

    Vielleicht so?:
    Du willst von einem Zeichen einen 2 Byte langen Integerwert. Wenn du das willst, dann kannst du ja in den hexa-wert umrechnen (?).

    Ich hoffe es hilft dir weiter.

    mfg,
    hr

    Beitrag ge?ndert am 24.12.2005 22:21 von heavyraptor
  6. Hi,

    hmm, vielleicht bin ich einfach zu dumm, um dein Problem zu verstehen, aber ich versteh nun so ungef?hr was du willst.

    Ich hab deinen Code gerade ausprobiert, und der funktioniert ja (der wert, der ausgespuckt wird, ist zwar 22210, aber ich gelube, du hast das falsh hingetippt (??)). Dann hast Du ja was Du willst oder?
    Auf diese Idee bin ich ?brigens auch gekommen, aber ich dachte nicht dass du das gebrauchst, lol.
    Bessere m?glichkeiten um den Wert zu berechnen fallen mir da nicht ein.

    mfg,
    hr

    Beitrag ge?ndert am 25.12.2005 13:12 von heavyraptor
  7. Gut, freut mich, dass es funktioniert :).
    Jetzt ist mir auch klar, was Du wolltest. Ich weiss nicht, ob es eine Funktion daf?r gibt, aber bei php.net steht nichts, es ist warscheinlich auch seleten, dass man so eine Funktion ben?tigt.

    Edit:
    Ich ahb die Funktion BinEdit noch ein bischen ver?ndert, jetzt ist sie nur 3 Zeilen lang:

    function BinEdit($bin) {
      return substr("00000000",strlen($bin) - 8) . $bin;
    }

    Cool, nicht wahr?

    Edit2:
    So geht's noch einfacher um alles zu machen:
    function dezimalWert($str) {
      $bin = "";
      for ($i = 0; $i < strlen($str); $i++) {
       $bin .= substr("00000000",strlen(decbin(ord($str[$i]))) - 8) . decbin(ord($str[$i]));
      }
      return bindec($bin);
    }
    
    echo "Dezimal-Wert von bla: " . dezimalWert("bla");


    Da nimmts mich jedoch noch wunder, f?r was brauchst du dieses Script? Was ist der Zweck?

    mfg,
    hr

    Beitrag ge?ndert am 25.12.2005 18:24 von heavyraptor
  8. Hi,

    achso, jetzt verstehe ich den Zweck ;).

    Zur Funktion: Die Funktion macht doch das genaugleiche, ich hab sie sogar ausprobiert. Es ist nur eine verk?rzte Art den richtigen Bin?rwert zu bekommen.
    Deswegen funktioniert auch diese Funktion, mit der du gleich alles berechnen kannst, ohne dass du irgendwelche Zwischenschritte ben?tigst:

    function dezimalWert($str) {
      $bin = "";
      for ($i = 0; $i < strlen($str); $i++) {
       $bin .= substr("00000000",strlen(decbin(ord($str[$i]))) - 8) . decbin(ord($str[$i]));
      }
      return bindec($bin);
    }


    Probiers mal aus.

    mfg,
    hr
  9. Hi,

    du hast recht, dass man es so machen kann, aber die andere Variante geht auch ;). Wenn du z.B. den Bin?rwert 10010 hast, dann ist strlen(decbin(ord($str[$i]))) - 8 = -3. Also wird vom String "00000000" von der -3 Stelle an hinzugef?gt (also "000"). Dann kommt das gleiche Resultat.
    Du musst eben strlen(decbin(ord($str[$i]))) - 8 schreiben, nicht 8 - strlen(decbin(ord($str[$i]))), sonst geht es ja nicht, weil der Wert positiv ist. Es ist jedoch egal, denn so, wie Du es gemacht hast (mit dem 0 davor als 2. Argumment) geht's ja auch :biggrin:.

    mfg,
    hr
  10. Hi,

    ich hab es nochmals ausprobiert, und es funktioniert wirklich beides.
    Hier hab ich noch von php.net:

    echo substr('abcdef', 1);     // gibt "bcdef"
    echo substr('abcdef', 1, 3);  // gibt "bcd"
    echo substr('abcdef', 0, 4);  // gibt "abcd"
    
    // Hier mit den negativen Werten:
    echo substr("abcdef", -1);    // gibt "f"
    echo substr("abcdef", -2);    // gibt "ef"
    echo substr("abcdef", -3, 1); // gibt "d"


    Deswegen meine ich, dass beide funktionieren.
    Das problem war eben mit dem -8, wie ich schon sagte. Man muss es nach dem strlen(decbin(ord($str[$i]))) hinschreiben und nicht davor ;).

    Ok, ich denke, dass es eigentlich egal ist, wie man es macht. Die funktion dezimalWert funktioniert ja, und dabei ist das Problem gel?st :).

    EDIT!!!!!:
    Du hast recht, es gibt einen bug :biggrin::
    Wenn man es mit einem Bin?rwert der 8 Zeichen lang ist (z.B. "10101010") versucht, dann geht es nicht. Ich weiss auch schon warum: strlen(decbin(ord($str[$i]))) - 8 w?re dann 0, also wird von "00000000" alles zur?ckgegeben (es wird zu 0000000010101010).
    Deine Variante ist wohl besser :).

    mfg,
    hr

    Beitrag ge?ndert am 26.12.2005 18:04 von heavyraptor
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!