Unity/c# Zahlen eines Strings miteinander vergleichen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich weiß nicht, wie genau der string aufgeteilt ist, aber wenn ich das richtig verstehe, könnte man es so machen:

string[] numbers = deinString.Split(":");
if(Convert.ToDouble(numbers[0]) > Convert.ToDouble(oldNumber[0]))
if(Convert.ToDouble(numbers[2]) > Convert.ToDouble(oldNumber[1]))
Von Experte BoundfoxStudios bestätigt

Zahlen in Strings können nicht verglichen werden, du musst sie dazu in Integer umwandeln. Vielleicht machst du einen Double um die Zeit in einer einzigen Variable als Sekundenangabe vergleichen zu können...

Woher ich das weiß:Hobby – Programmiere seit eineinhalb Jahren

Spreichere einfach nicht den String sondern ein Int in der kleinsten Einheit, z.B. Sekunden oder Millisekunden. Soetwas nennt man Timestamp. Die Zeit muss ja irgendwo herkommen, DateTime, Timespan? Da gibt es Parameter wie z.B. TimeSpan.Milliseconds. Vielleicht kansnt du den Timespan auch direkt serialisieren.

In Unity wandelst du den Int dann in einen formatierten String um, so wie du ihn haben möchtest. Speichere immer die Daten die dein Programm benötigt, nicht die, die der User benötigt um sie zu verstehen.

Woher ich das weiß:Berufserfahrung

Der Computer arbeitet mit Bits - das heißt Nullen und Einsen - und damit sind Strings auch irgendwo nur Zahlen. Jetzt hat man sich verschiedenste Codierungen ausgedacht, also Wege, um Buchstaben und Zahlen mit Hilfe von Bits darzustellen. Zum Beispiel ist dir vielleicht Unicode ein Begriff. Falls du für deinen String oder falls C# standardmäßig Unicode als Codierung verwendet, dann kannst du in der entsprechenden Tabelle im Internet nachschlagen, welche Bit-Reihenfolge die verschiedenen Buchstaben und Zahlen haben. So ist es bei der 1 beispielsweise 00110001, was als Dezimalzahl 49 ist. Die 2 wird analog mit Hilfe der 50 im Speicher dargestellt usw. Du könntest also den entsprechenden Buchstaben bzw. die Zahl im String in Bytes konvertieren (Convert.ToByte ist anscheinend die geeignete Funktion) und von diesen Bytes 48 abziehen, um auf die gewünschte Ganzzahl zu kommen.

Das ist leider allgemein formuliert, weil ich mich nicht mit C# auskenne. Ansonsten scheint das Folgende einer Lösung deines Problems konkreter nachzukommen: https://stackoverflow.com/questions/36369735/how-to-convert-a-string-to-bits-in-c-sharp