Ascii Zeichen in Hex umwandeln


Fireball1982

Mitglied
Hallo,
ich versuche gerade einen String der in Ascii steht in Hex umzuwandeln, kann mir jemand helfen? Gibt es da einen speziellen Befehl? mit Ascii Encoding kann ich ja nur in Ascii umwandeln, oder?
danke
 

Alexander Schuc

crazy-weasel
Hi.

Da du ein wenig komisch geschrieben hast, frag ich besser nochmal nach.

Du hast also eine HEX-Zahl in einer String-Variable, und willst einen Zahlentyp haben?

Wenn ja, machs so:

Code:
int myInt = int.Parse(hex, System.Globalization.NumberStyles.HexNumber);
Ist C# schreibweise, in VB.net wirds wohl bissl anders aussehen.

MfG,
Alex
 

Fireball1982

Mitglied
ok, war bissle komisch geschrieben, also nochmal:
Ich bekomme einen String zugesendet, der Hexadezimalzahlen enthält, z.B.
(6B 4A 32 ...)
Aus diesem String möchte ich 4 bestimmte Zahlen auslesen und sie als Ascii Zeichen darstellen.
Hier z.B. wenn ich die ersten 2 Zeichen haben wollte, möchte ich sie dann als (k J) darstellen.
Wie kann ich deutlich machen, dass der String Hexadeizimazahlen enthält?
Und wie kann ich sie dann in Ascii umwandeln?

Danke Fireball
 

Alexander Schuc

crazy-weasel
Das rauslesen der 2 Zeichen kannst mit Substring machen, oder wenn die Paare immer durch ein Leerzeichen getrennt sind, kannst auch die Split-Methode drauf anwenden.

Dann wandelst du diese Substrings mit der von mir gezeigten Methode in einen Integer um, wobei ein Byte auch ausreichen würde - aber egal, diesen ganzzahligen Wert kannst du dann in einen char casten.

Code:
Dim input As String = "6B 4A 32"
Dim sub  As String = input.Substring(0,2)

Dim num_val As Byte = byte.Parse(sub, System.Globalization.NumberStyles.HexNumber)

Dim aChar as Char = (char) sub
So in die Richtung wirds dann aussehen.
 

the incredible Leitman

Erfahrenes Mitglied
netter Post...


Wenn auch ein bisschen später, ich habe bisher nichts sinnvolles gefunden,
aber wie würe der umgekehrte Weg funktionieren?

Ich habe eine Oberfläche, die Werte umkonvertiert...

Also in / von HEX, DEZIMAL und BINÄR
Nun soll auch noch Ascii dazukommen...

Da ich leider keine Methoden für die umwandlungen gekannt habe,
habe ich bisher einfach alles selbst berechnet, also mit "%2" und so weiter gearbeitet

Jedoch, wie kann ich nun diese Werte (binär oder Dezimal oder hex) nun in Ascii umwandeln? :confused:

Ich kenne zwar die Tabelle, aber ich möchte nicht alles einzeln umkovertieren müssen 'ala :
// Pseudocode
C++:
...
case 65:
 return 'A'
 break;
...
Gibts dafür etwas hilfreiches? Bitte Hilfe ^^

PS: Ich arbeite mit VC++.NET VS2005
 

rusarku

Grünschnabel
@the incredible Leitman

man kann die Tabelle etwas verkürzen, da diese mit der Ausnahme einer Unterbrechung linear verläuf (gilt für alle Zahlensysteme deren Basis kleiner 37 ist):

(C#-Syntax)

private char GetChar(int value)
{
if (value > 9)
return (char)(value + 55);
else
return (char)(value + 48);
}
 

the incredible Leitman

Erfahrenes Mitglied
hehe, du hast eben auf einen über eineinhalb Jahre alten Post von mir geantwortet xD

Trotzdem Danke ^^
(btw, du kannst Code Tags verwenden z.B.: "[.code]hier der code[./code]", ohne die Punkte)


Dennoch werd ich mal posten, wie ichs dann letzendlich gemacht habe und wie es meiner Meinung nach am sinnvollsten ist ^^

Code:
// code in vc++.net
int intValue;
System::String ^text = Char::ConvertFromUtf32(intValue);

intValue = Char::ConvertToUtf32(text, 0);
HINWEIS: Pseudo Code, übernehme keine Garantie für die Richtigkeit der Methoden, bitte für nähere Information die Sufu oder :google: verwenden ;)


PS: Gz zu deinem ersten Post hier und willkommen ^^