Warum funktioniert das hier nicht:?
Spoiler anzeigen
[autoit]
$file=fileread("temp.txt")
msgbox(0,"",binarytostring($file))
Text der Temp.txt Datei:
0x61626320
Warum funktioniert das hier nicht:?
$file=fileread("temp.txt")
msgbox(0,"",binarytostring($file))
Text der Temp.txt Datei:
0x61626320
Sehr wahrscheinlich liegt es am Pfad zur temp.txt Datei.
Gruß,
UEZ
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.
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:
FileWrite("temp.txt", StringToBinary("abc"))
$file=fileread("temp.txt")
msgbox(0,"",binarytostring($file))
...dann kriege ich eine Textdatei, wo "abc" drinsteht und die msgbox sagt "abc".
Ist doch in Ordnung, oder was soll sonst rauskommen ?
Also, wenn ich dies aufrufe, dann kommt das erwünschte Ergebnis:
[autoit]
$file="0x61626320"
msgbox(0,"",binarytostring($file))
und mit
[autoit]
$file=fileread("temp.txt")
msgbox(0,"",binarytostring($file))
nicht. Woran liegt das wohl?
Gruß,
UEZ
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?
$string = "abc"
$sFile = @ScriptDir & "\temp.txt"
$hFile = FileOpen($sFile, 2)
FileWrite($hFile, String(StringToBinary($string)))
FileClose($hFile)
$file=FileRead($sFile)
msgbox(0,"",binarytostring($file))
Gruß,
UEZ
Frage:
ZitatWIESO 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.
ZitatJa 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....
Wenn ich FileRead() mit einer Textdatei verwende, dann erhalte ich auch einen String und nichts binary. Wenn du binär auslesen willst, musst du die Datei zuerst mit FileOpen im Binärmodus öffnen.
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.
Naja ungeprüft ob das überhaupt stimmt hat das nichts mit den Binary Funktionen in autoit bzw. deren Sinn zu tun.
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.
Hi,
ZitatDas 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....
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.