PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String als Hexcodes interpretieren?


Mr. Lolman
2008-01-13, 15:50:44
Ich hab da nen String, der aus ausschliesslich aus Hexcodes besteht (ohne Leerzeichen). Gibts nen irgendnen Hexeditor der die Hexcodes richtig als solche interpretiert und auch in ne lesbare Zeichenkette umwandeln kann?

PHuV
2008-01-13, 16:02:09
Du mußt nur einen Editor haben wie UltraEdit (http://www.ultraedit.com/index.php?name=UE_MoreFeatures), in den Hexmodus wechsel (STRG-H) und dann den Hexstring direkt in die Hexseite links eintragen, rechts siehst Du dann den Klartext.

Experten lesen natürlich den Hextext direkt, gelle. :tongue:

Update: Sieh an, Hexworkshop kann so etwas gar nicht, weil es eine eigene Cut/Copy/Paste-Logik hat, grr. :mad:

Gast
2008-01-13, 19:05:02
sollte mit den meisten hexeditoren funktionieren

BAGZZlash
2008-01-13, 20:02:45
Geht auch mit dem Windows-Calc.

PatkIllA
2008-01-13, 20:05:54
Geht auch mit dem Windows-Calc.
Wie das denn?

@Topic
Bist du denn sicher, dass es ASCII ist?
Im Grunde hängt es ja vom Encoding ab, was es bedeutet.

Mr. Lolman
2008-01-14, 08:23:35
Du mußt nur einen Editor haben wie UltraEdit (http://www.ultraedit.com/index.php?name=UE_MoreFeatures), in den Hexmodus wechsel (STRG-H) und dann den Hexstring direkt in die Hexseite links eintragen, rechts siehst Du dann den Klartext.

So geht das nicht. Ich kann nicht einfach so in den Hexmodus wechseln, wenn ich noch keine Daten hab. Und sobald ich im Hexmodus bin (in dem ich irgendwas eingefügt, oder geöffnet hab) kann ich dort nichts direkt importieren. Die Zwischenablage wird immer als ASCII interpretiert, wobei sie doch eindeutig HEX ist:



4E61747269756D6B6172626F6E6174

Natriumkarbonat
2008-01-14, 08:35:40
<--- In Notepad++ geht das auf jeden Fall :)

PHuV
2008-01-14, 15:05:24
<--- In Notepad++ geht das auf jeden Fall :)

Nop, geht auch nicht, habs gerade mit 4.7.4

UltraEdit kann kein Insert beim Hexmodus, ich dachte, das geht. :mad:

Gast
2008-01-14, 15:23:18
Ich kenne keinen Editor, der ASCI-HEX Symbole uminterpretiert. Dazu müsste man die Länge einer Zahl vorgeben können. Der Editor müsste dann auf Längenkonsistenz prüfen und und und ...

Also wenn du so einen Editor findest, dann gleich bescheid geben.

PHuV
2008-01-14, 15:47:29
4E61747269756D6B6172626F6E6174

Dann doch ein schneller Hack:


#include <stdio.h>
#include <ctype.h>

int hextoint(char);

int main(int argc, char *argv[]) {

char *ptr, *ptr2;
char buffer[20];
int temp;

for (ptr = argv[1], ptr2 = buffer; *ptr; ptr+=2, ptr2++) {
temp = (hextoint(*ptr) << 4) + hextoint(*(ptr+1));
*ptr2 = (char)temp;
}
*ptr2 = '\0';

printf("Hexstring liefert %s\n", buffer);
return 0;
}

int hextoint(char c) {
c = toupper(c);
return (c > '9' ? c - 'A' + 10 : c - '0');
}


Ergebnis :confused:

Hexstring liefert Natriumkarbonat

Mr. Lolman
2008-01-14, 16:33:44
Dann doch ein schneller Hack:


#include <stdio.h>
#include <ctype.h>

int hextoint(char);

int main(int argc, char *argv[]) {

char *ptr, *ptr2;
char buffer[20];
int temp;

for (ptr = argv[1], ptr2 = buffer; *ptr; ptr+=2, ptr2++) {
temp = (hextoint(*ptr) << 4) + hextoint(*(ptr+1));
*ptr2 = (char)temp;
}
*ptr2 = '\0';

printf("Hexstring liefert %s\n", buffer);
return 0;
}

int hextoint(char c) {
c = toupper(c);
return (c > '9' ? c - 'A' + 10 : c - '0');
}


Ergebnis :confused:

Hexstring liefert Natriumkarbonat


Thx :eek:. Aber der Gast hat das mit dem Notepad++ offensichtlich auch irgendwie geschafft.

PHuV
2008-01-14, 16:55:51
Thx :eek:. Aber der Gast hat das mit dem Notepad++ offensichtlich auch irgendwie geschafft.

Dann bin ich zu doof für das Programm. Ich habe gesehen, daß bei Notepad eine Funktion "Convert hex to char" gibt, die lieferte bei mir aber nichts, bzw es tat sich nichts.

Na ja, meinem Programm kann man wenigstens jeden String übergeben, und der konvertiert (wobei man die Arraygröße des Buffers vielleicht noch flexibel machen sollte).

Sag bescheid, wenn Du das brauchst. :biggrin:

gr@fz@hL
2008-01-14, 17:02:18
keine Ahnung wie Notepad++ das macht (ich habs dami nicht hinbekommen), aber mit dem mirkes.de Tiny Hexer ist das kein Problem, einfach den Text in eine neue datei kopieren kopieren und beim Datenformat "Hex-Text" auswählen.

Mr. Lolman
2008-01-14, 17:08:16
Dann bin ich zu doof für das Programm. Ich habe gesehen, daß bei Notepad eine Funktion "Convert hex to char" gibt, die lieferte bei mir aber nichts, bzw es tat sich nichts.

Mit der Funktion "Convert Hex to Text" gehts. Allerdings braucht er dann Leerzeichen zw den Bytes, was auch zäh wird, sobald die Hexwurst länger ist.

PHuV
2008-01-14, 17:24:06
Mit der Funktion "Convert Hex to Text" gehts. Allerdings braucht er dann Leerzeichen zw den Bytes, was auch zäh wird, sobald die Hexwurst länger ist.

Die meinte ich auch, aber das mit den Leerzeichen, darauf muß man erst mal kommen. :rolleyes: Aber siehe da, dann geht es wirklich. Ist trotzdem blöde, so einen String erst hinformatieren zu müssen.

Gast
2008-01-14, 20:12:27
http://666kb.com/i/av8pyxoo4rymnu5wl.jpg

PHuV
2008-01-14, 20:17:49
..

Jetzt ist es schon klar. Ich habe einfach den String zuerst in den Editor kopiert und dann gleich die Funktion Convert hex to text gewählt, aber da tut sich nichts. Erst wenn man Leerzeichen nach jedem 2.Byte einfügt, kommt das gewünschte Ergebnis. IMHO nicht gerade benutzerfreundlich und intuitiv.

Gast
2008-01-14, 20:38:40
Notepad++ 4.2.2
Erweiterungen-->Hex Editor
zeigt jetzt eine leere Datei an
Erweiterungen-->Hex Editor-->Insert Columns
Hex String eintippen und die Länge angeben (Count)
-->ok

Beim kopieren über die Zwischenablage wird es freilich uminterpretiert (Zeichensatz Problem?)

PHuV
2008-01-15, 10:35:34
Erweiterungen-->Hex Editor-->Insert Columns
Hex String eintippen und die Länge angeben (Count)
-->ok


Genau das ist der Knackpunkt, man muß es einzeln hier eintippen, das geht mit HexWorkshop 5 auch.


Beim kopieren über die Zwischenablage wird es freilich uminterpretiert (Zeichensatz Problem?)

Ne, beim Kopieren in die Leiste bei Insert Columns (tolle deutsche Menüführung übrigens :rolleyes:, Version deutsch 4.7.5) wandelt er die kopierte Zeichenkette sofort wieder in Hex um, was natürlich falsch ist. Aus 4e (das N) wird 34 45 (Hex für 4 und E). Blöder Editor. :mad:

Der schnellste Weg ist immer noch, den Hexstring einfach einzufügen, Leerzeichen nach jedem 2.Byte und dann

TextFX
TextFX Convert
Convert Hex to Text