Hallo zusammen,
ich habe das bereits in einem anderen Forum gepostet, bin dort aber zu keiner Lösung gekommen. Mein Problem:
Ich habe einen String der Form: "00 01 02 03" dieser soll die Hexzeichen 0x00, 0x01, 0x02 und 0x03 symbolisieren. Jetzt will ich das ganze in ein byte-Array umwandeln, in dem die symbolisierten (also 0x00 etc) Hexwerte abgelegt werden. Das habe ich mit Hilfe anderer bisweilen so gelöst, wobei str mein String ist:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| public static string HexToAsc(string str) { string[] hex = str.Split(); string result = null; for (int i = 0; i < hex.Length; ++i) result += (char)Convert.ToUInt16(hex[i], 16); return result; }
string asciistringtisend = HexToAsc(stringtosend); byte[] buffer = Encoding.UTF8.GetBytes(asciistringtosend); int laenge = buffer.Length; for( int r= 0; r<laenge;r++) { if(buffer[r] == 0xC2) { for(int k = r; k<buffer.Length-1;k++) buffer[k] = buffer[k+1]; laenge--; } } byte[] befehl = new byte[laenge]; for(int l = 0; l<lange;l++) befehl[l] = buffer[l]; |
Das Problem ist, dass es nicht mi allen Zeichen geht. Irgendwas passt wohl mit dem "Encoding.UTF8.GetBytes" nicht. da Ich aber auch "signed-Werte" brauche schien mir das als einziges passend.
Damals habe ich meinen Workauround für die mir bekannten Fehler erweitert für die Zeichen 0xC2 0x83 0xAF. Jetzt will ich aber gern das ganz fehlerfrei bekommen. Hat jemand ne Ahnung woran es liegt und was man ändern muss?