Ich muss normalisierte Integer-Werte in und von realen Gleitkommawerten konvertieren. Für int16_t wird beispielsweise ein Wert von 1,0 durch 32767 und -1,0 durch -32768 dargestellt. Obwohl es für jeden Integer-Typ, sowohl mit Vorzeichen als auch ohne Vorzeichen, etwas mühsam ist, ist es immer noch einfach, von Hand zu schreiben.Normalisierte Ganzzahl zu/von Float-Konvertierung
Ich möchte jedoch, wann immer möglich, Standardmethoden verwenden, anstatt das Rad neu zu erfinden, also suche ich nach einem Standard-C- oder C++ - Header, einer Boost-Bibliothek oder einem anderen kleinen tragbaren Gerät , leicht einzubindende Quelle, die diese Konvertierungen bereits durchführt.
Ich bin nicht sicher, dass eine Bibliothek benötigt wird ... 'double convert (int16_t x) {return x <0? x/double (32768): x/double (32767);} '. Es kann leicht mit Hilfe von 'std :: numeric_limits' für alle int-Typen als Vorlagen erstellt und verallgemeinert werden. Jedenfalls ist es sehr kurz zu machen und sicherlich nicht in der Standardbibliothek. Schau auch hier: http://stackoverflow.com/questions/929103/convert-a-number-range-on-another-range-maintaining-ratio – coyotte508
@ coyotte508 Obwohl ich es noch nicht gefunden habe, habe ich wirklich gesucht/Ich hoffe auf etwas, das bereits getempert wurde, wie zB std :: numeric_limits in der Standard-Bibliothek, das tut das schon, weil ich weiß, dass ich nicht die Einzige bin, die das braucht. Ich habe so viel von meiner Karriere damit verbracht, Code zu schreiben, der bereits standardisiert sein konnte und sollte, um später herauszufinden, dass jemand _bereits_ geschrieben hatte, dass ich in diesen Tagen versuche, existierenden, standardisierten Code zu finden, bevor ich ihn selbst schreibe. BTW, danke für den Link. – IntellectualKitty
Ich würde normalerweise zustimmen, aber wenn es eine Zeile ist, ist es klarer, es "inline" (vor Ort) zu haben, als in einen obskuren Namen-Funktionsaufruf von Möchtegern-Standard verpackt. Übrigens, orthogonal zur Frage, willst du wirklich Floats benutzen? Die Genauigkeit variiert enorm im Bereich zwischen 0 und 1. –