char to hex
-
Ja nur Netfiler kann man den Port nur in dem Format übergeben..
also muss ich aus 22 irgendwie \x00\x16 machen... wie mach ich das?
soll ja nacher nicht nur mit 22 gehn;)mfg
-
Was ist netfilter?
Willst du 22 in den String "16" umwandeln?
int zahl=22; char port[3]; sprintf(port, "%x", zahl);
-
Hi,
Netfilter is packetfiltering unter Linux.
Also nochmal etwas genauer.
Ich öffne ein config file und lese die Ports aus.
Dann hab ich zb. einen Stringchar *port = "22";
und dann möchte ich aus diesem Port einen hex wert machen.
Nur brauche ich den hexwert in diesem format:
\x00\x16 #im Fall von Port 22und dazu bräucht ich jetzt irgendwie eine geeignete Funktion=/
mfg
-
Hi,
schau mal nach der Funktion 'atoi()'. Die macht Dir zwar nur einen Integer, aber hex ist ja auch nur eine Dartstellungsform. Du wirst das ganze ja als Zahl brauchen, und nicht als char* .
grüße Con@n
-
wie wärs damit?
char *port="22"; char xport[5]; sprintf(xport, "%X", atoi(port));
Dann hast du in dem String xport die hexadezimale Zahl von der dezimalen 22 stehen. Eigentlich eine Mischung aus dem, was meine Vorredner schon brachten.
-
Hi,
danke erstmal, das klappt schonmal.
Jetzt hab ich jedoch noch ein Problem, ich müsste ein \x vor die Zahl stellen.
Das hab ich so versucht:char *temp = "16"; /* zb. port 22 */ char *tport = "\x"; strcat(tport,temp);
Lässt sich aber nicht kompilieren:
"\x used with no following hex digits"Wie kann ich das machen?
mfg
-
char *tport = "\\x";
-
char *tport = "\\x";
Da hat mich das Forum aber ausgetrickst. Erst sagen, ich hätte nicht eingetragen und man könne nicht so viele Nachrichte direkt hintereinander absenden und dann trotzdem hier eintragen
-
Hi,
Super Danke! Klappt jetzt alles!
mfg
-
AfX schrieb:
Hi,
char *temp = "16"; /* zb. port 22 */ char *tport = "\x"; strcat(tport,temp);
Der arme Speicher...
Wenn du einen String an einen anderen hängst, solltest du unbedingt darauf achten, dass noch genügend Speicherplatz reserviert ist für das Anhängsel.
-
Bist du sicher, dass "\x16" das ist was du willst? Der C-Compiler setzt das nämlich in das Zeichen mit dem Wert hexadezimal 16 um.
Wenn du aber manuell einen String zusammenschusterst, in dem "\x16" steht, ist das dem Compiler völlig egal. Dann ist das kein Hexwert, sondern ein einfacher String in dem ein Backslash gefolgt von einem x und einer 16 stehen.