BinaryToString Funktioniert nicht?!?!

  • Warum funktioniert das hier nicht:?

    Spoiler anzeigen
    [autoit]

    $file=fileread("temp.txt")

    msgbox(0,"",binarytostring($file))

    [/autoit]

    Text der Temp.txt Datei:
    0x61626320

  • nein, Programm und temp sind im selben Ordner (Desktop)

    Das auslesen funktioniert ja auch, jedoch wird der Binary code nicht umgewandelt in einen String, sondern als Binary Code ausgegen und ich weiß nciht warum!=?!?

  • 0x61626320 sind die ASCII-Hex werte für "abc ", als String.
    Wenn du "Binary" in der Datei haben willst, dann erstell sie mit einem Hex-Editor.

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • AAAAAAAAH,
    also nochmal
    ich benutze die funktion StringToBinary("abc")
    und das kommt raus.
    Ende. Binary.

    WIESO kann ich das dann NICHT mir BinaryToString auslesen?

  • OK, ich glaub jetzt hab ichs kapiert.
    Wenn ich das hier ausführe:

    [autoit]


    FileWrite("temp.txt", StringToBinary("abc"))
    $file=fileread("temp.txt")
    msgbox(0,"",binarytostring($file))

    [/autoit]


    ...dann kriege ich eine Textdatei, wo "abc" drinsteht und die msgbox sagt "abc".
    Ist doch in Ordnung, oder was soll sonst rauskommen ?

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • Also, wenn ich dies aufrufe, dann kommt das erwünschte Ergebnis:

    [autoit]


    $file="0x61626320"
    msgbox(0,"",binarytostring($file))

    [/autoit]

    und mit

    [autoit]


    $file=fileread("temp.txt")
    msgbox(0,"",binarytostring($file))

    [/autoit]

    nicht. Woran liegt das wohl?

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Ja aber wenn ich nur fileread("temp.txt") mache, kommt ja auch 0x61626320 raus.
    Daher liegt es nicht daran, dass die temp datei falsch platziert ist/nicht gefunden wird.

    Es handelt sich meiner Meinung nach vielmehr um einen Bug in AutoIt

  • Wie hast du die temp.txt erstellt?


    [autoit]


    $string = "abc"
    $sFile = @ScriptDir & "\temp.txt"
    $hFile = FileOpen($sFile, 2)
    FileWrite($hFile, String(StringToBinary($string)))
    FileClose($hFile)

    [/autoit][autoit][/autoit][autoit]

    $file=FileRead($sFile)
    msgbox(0,"",binarytostring($file))

    [/autoit]


    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    Einmal editiert, zuletzt von UEZ (6. Juli 2012 um 15:42)

  • Frage:

    Zitat

    WIESO kann ich das dann NICHT mir BinaryToString auslesen?


    Antwort:
    Weil du keine Ahnung hast!

    Zu jeder Frage gehört ein Problem, DEIN Problem ist, du erzählst in x Posts, was du gern ausgegeben haben möchtest, hast aber kein einziges Mal das Ergebnis bzw. Inhalt deiner MsgBox() gepostet....

    Und warum nicht?
    Weil dann dem ersten besten, der diesen Thread gelesen hätte, klar gewesen wäre wo DEIN Fehler liegt.
    Bis zum 10. Post weiss immer noch niemand, was deine MsgBox ausgibt....soviel dazu.

    Zitat

    Ja aber wenn ich nur fileread("temp.txt") mache, kommt ja auch 0x61626320 raus.

    DAS hätte ich mal gerne gesehen^^

    Btw., auch deine Datei hätte Platz im Anhang gehabt....

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (6. Juli 2012 um 18:59)

  • Der ganze Binary Kram in AutoIt is meiner Meinung nach eh Blödsinn.
    Was ist ein ASCII String ? Ein Array aus Bytes, mit null am Ende (C-String).
    Wenn du einen ASCII Text als "Binary" betrachtest, sollte das ein Array sein das als 0x61 0x62 0x63 0x20 0x00 dargestellt wird.
    Die Verkettung zu 0x61626320 macht daraus ein 32-bit wort, das keinen Sinn mehr ergibt.
    Binary Strings sind ein Oxymoron, das widerspricht sich. Strunzdämlich. :thumbdown:

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • Naja ungeprüft ob das überhaupt stimmt hat das nichts mit den Binary Funktionen in autoit bzw. deren Sinn zu tun.


    Das heisst dass du nicht verstanden hast, worüber ich schimpfe.

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • Hi,

    Zitat

    Das heisst dass du nicht verstanden hast, worüber ich schimpfe.

    vielleicht weil er nicht verstanden hat, worüber du schimpfst^^
    Binarytostring() und stringtobinary() machen sehr wohl Sinn, so ist es z.B. möglich ANSI, UTF8, UTF16 (Big/Little Endian) zu verwenden bzw. ineinander umzuwandeln. Wird verwendet bei Dateien anderer Rechnerplattformen oder Konvertierung von Text- oder HTML-files (Sprachenabhängig).
    Ausserdem sind Binarytostring() und stringtobinary() nicht auf 32-Bitformat beschränkt, das obere Limit ist die verwendbare Speichermenge^^ (ggf. hast du das mit HEX () bzw. DEC() verwechselt)

    Aber ich verstehe, was du meinst....
    Habe auch in der letzten Woche mehrere Threads gelesen, in denen krampfhaft versucht wurde, bestehende Daten in einer eindeutigen Form in Arrays zu verfrachten anstatt diese Daten einfach direkt zu verwenden.
    Wenn man ein bestimmtes Byte innerhalb von einem Datenstamm sucht, dann muss kein Mensch diese Daten erst einzeln in "Binary" (HEX-Darstellung) in ein Array bringen um dann dieses Array nach dem Byte (stringtobinary bzw. HEX-Darstellung) zu durchsuchen....

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (6. Juli 2012 um 20:21)

  • Oder auch von Windowsprogrammen?
    Wie auch immer derartige Daten kommen nun mal in der freien Wildbahn vor und autoit kann sie über die entsprechenden Funktionen verarbeiten.

    Kommt ja auch darauf an was man damit machen möchte.
    Reine Konvertierung, darstellen usw.

    Daher verstehe ich nicht so ganz worüber hier geschimpft wird. ;)