Stefan Link: 0 und 1 richtig darstellen

Hallo community,

meine Frage ist die folgende: ein A* Algo speichert Topologiedaten in der folgenden Form: ^@^@^A^A^A^@^@^A^A^A usw. ^@^@^A^A^A. Es gibt nur die Topologiewerte 0 und 1 (0 = See, 1 = Land).

Jetzt hat sich meine Karte vergrößert und ich möchte die Datei, welche die Topologiewerte enthält neu schreiben. Dazu ziehe ich die Werte aus meiner DB und schreibe sie da rein. Nur stehen sie dann eben als dezimal 0 und 1 drin, also 001100111 etc.

Wenn ich in eine ASCII Tabelle schaue finde ich das ^A als ASCII hex noch aber dann hört es auch auf. Kann mir hier jemand weiterhelfen? Ich weiß, dass ^@^@^A^A^A = 00111 aber weiter komme ich leider nicht :(

Vielen Dank!
Stefan

  1. hi,

    Ich weiß, dass ^@^@^A^A^A = 00111 aber weiter komme ich leider nicht :(

    Du möchtest also le´diglich in einem String, der nur Nullen und Einsen enthält, die Null durch ^@ und die Eins durch ^A tauschen?
    Dann nimm str_replace().

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Dann nimm str_replace().

      gruß,
      wahsaga

      Genau das hatte ich auch gedacht! Klappt aber nicht weil (sorry jetzt wirds unprofessionell):

      Wenn ich mir die Datei topologie.dat auf der shell mit vi anschaue und :syn on habe wird die alte in blauer Schrift dargestellt. Meine neue in weiß. Also irgendwo muss da ein Unterschied sein und daran verzweifle ich gerade :(

    2. Hallo,

      Ich weiß, dass ^@^@^A^A^A = 00111 aber weiter komme ich leider nicht :(
      Du möchtest also le´diglich in einem String, der nur Nullen und Einsen enthält, die Null durch ^@ und die Eins durch ^A tauschen?
      Dann nimm str_replace().

      ja, und dabei bitte beachten, dass ^A hier nur als "lesbare" Darstellung für Ctrl-A (0x01) steht und ^@ für Ctrl-@ (0x00). Also müsste man bitte nicht 0 durch "^@" und 1 durch "^A" ersetzen, sondern durch "\x00" respektive "\x01".
      Kann PHP korrekt mit Strings umgehen, die Nullbytes als Nutzzeichen enthalten?

      So long,
       Martin

      --
      Butterkeksverteiler zu werden ist vermutlich eine der wenigen beruflichen Perspektiven, die sich noch bieten, wenn man einen an der Waffel hat.
        (wahsaga)
      1. ja, und dabei bitte beachten, dass ^A hier nur als "lesbare" Darstellung für Ctrl-A (0x01) steht und ^@ für Ctrl-@ (0x00). Also müsste man bitte nicht 0 durch "^@" und 1 durch "^A" ersetzen, sondern durch "\x00" respektive "\x01".
        Kann PHP korrekt mit Strings umgehen, die Nullbytes als Nutzzeichen enthalten?

        Danke Martin, dass war der entscheidende Hinweis :) Ob Php mit den Nullbytes klar kommt werde ich gleich mal testen und dann Bescheid geben.

      2. Hallo Martin,

        Kann PHP korrekt mit Strings umgehen, die Nullbytes als Nutzzeichen enthalten?

        PHP an sich ja, aber nicht alle Funktionen, reguläre Ausdrücke sind ein gutes Beispiel dafür: Die ereg*-Funktionen sind z.B. nicht binärsicher, die preg*-Funktionen schon (allerdings nicht im Ausdruck selbst, nur in den zu verarbeitenden Daten; im Ausdruck gibt's dafür irgend ne Alternativsyntax).

        Aber die normalen String-Funktionen wie str_replace sollten damit klar kommen - würde mich zumindest wundern, wenn nicht.

        Viele Grüße,
        Christian

        --
        "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
      3. Moin!

        ja, und dabei bitte beachten, dass ^A hier nur als "lesbare" Darstellung für Ctrl-A (0x01) steht und ^@ für Ctrl-@ (0x00). Also müsste man bitte nicht 0 durch "^@" und 1 durch "^A" ersetzen, sondern durch "\x00" respektive "\x01".

        Kann PHP auch (wie ich es von Perl her kenne) die Darstellung "\c@" und "\cA"?

        -- Skeeve

      4. ...Ctrl-A (0x01) steht und ^@ für Ctrl-@ (0x00). Also müsste man bitte nicht 0 durch "^@" und 1 durch "^A" ersetzen, sondern durch "\x00" respektive "\x01".
        Kann PHP korrekt mit Strings umgehen, die Nullbytes als Nutzzeichen enthalten?

        Kann es! Gerade eben getestet, tut einwandfrei, vielen Dank :)

  2. Hi,

    meine Frage ist die folgende: ein A* Algo speichert Topologiedaten in der folgenden Form: ^@^@^A^A^A^@^@^A^A^A usw. ^@^@^A^A^A. Es gibt nur die Topologiewerte 0 und 1 (0 = See, 1 = Land).

    Auch in diesem Forum sind Crosspostings nicht gerne gesehen (vorsichtig formuliert!).

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!