Hallo,
Ich bin gerade an einem neuen Projekt.
Ich habe ein byte[] mit allen möglichen Werten
Nun suche ich mir mit Regex dementsprechend die Daten raus und will diese in ein Single konvertieren.
Da ich im Regex nur Strings verarbeiten kann wird das byte[] dementsprechend Konvertiert.
Das Problem ist Konvertiere ich aus dem byte[] direkt den Single bekomme ich den richtigen wert.
Konvertiere ich aus dem Ergebnis von Regex2 zeigt bekomme ich mittendrin unmögliche Werte.
Mich wundert es sehr weil alle Konvertierungen im ASCII getätigt werden.
Also was mache ich falsch?
Löscht BitConverter irgendwelch Zeichen?
wenn ich mir die Strings anzeigen lasse sehen diese in beiden Regex teilen gleich aus nur die Konvertierten Bytes nicht.
Aber auch nur wenn ich in einem Bereich über 100000 (Messwert) bin, dann zeigt er so etwas wie 168881 an.
Hier mal ein bisschen Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| pattern = @"([\s\S]{2})([\s\S]{4})([\s\S]{2})([\s\S]{4})([\s\S]{2})([\s\S]{2})([\s\S]{2})([\w+\s+./\,]+)\0([\w+\s+./\,]+)\0([\w+\s+./\,]+)\0([\w+\s+:./\,\[\]-]+)\0\0\0\0\0([\s\S]+)"; input = Encoding.ASCII.GetString(buffer, 0, buffer.Length); MatchCollection collection = Regex.Matches(input, pattern, RegexOptions.IgnoreCase);
foreach (Match m in collection) { wert = m.Groups[12].Value; }
pattern = @"([\s\S]+)"; Regex reg = new Regex(pattern, RegexOptions.IgnoreCase); Match matchRegVec = reg.Match(wert ); ausgabe = BitConverter.ToSingle(Encoding.ASCII.GetBytes(matchRegVec.Groups[0].Value), 14); |
Danke schon mal für eure Anregungen.
Moderiert von
Th69: Topic aus C# - Die Sprache verschoben am Do 02.10.2014 um 17:47
Der gesunde Menschenverstand ist nur eine Anhäufung von Vorurteilen, die man bis zum 18. Lebensjahr erworben hat. (Albert Einstein)