32-bit bis 16-Bit-Floating Point Conversion
Bei der Arbeit mit begrenzter Netzwerkbandbreite, konvertieren von 32-Bit auf 16-Bit-Floating-Punktnummern, um die Datengröße zu reduzieren. Hier ist ein Beispiel für eine C -Bibliotheksfunktion, die diese Konvertierung ausführen kann:
template Diese Funktion, Quick_encode_flt16, führt eine schnelle Konvertierung ohne Rundung durch. Für eine genauere Konvertierung mit Rundungsunterstützung können Sie die folgende Funktion verwenden:
template< typename F >
auto encode_flt16( F && value )
{ return flt16_encoder::encode< true >( std::forward< F >( value ) ); }
, um das konvertierte 16-Bit-schwimmende Punktnummer auf das ursprüngliche 32-Bit- oder 64-Bit-Format zurück zu dekodieren. Typename f = float, typename x & gt;
auto decode_flt16 (x & amp; & amp; Wert)
{return flt16_encoder :: decode & lt; F & gt; (std :: lt; x & gt; (value)); }
Diese Funktionen bieten eine bequeme Möglichkeit zum Konvertieren zwischen 32-Bit- und 16-Bit-schwimmenden Punktnummern, sodass Sie Ihre Daten für die Netzwerkübertragung komprimieren können, ohne die Genauigkeit ebenso wie bei festen Punktformaten zu beeinträchtigen. .
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3