Ein paar verschiedene Dinge. Wie Sie aus dem Beispiel von Pax sehen können, müssen Sie nur den Standard IEEE 754 nachschlagen und dann Ihre Bytes an den richtigen Stellen anschließen. Die einzige Vorsichtsmaßnahme, die ich Ihnen geben würde, ist, dass MicroSoft RtlMoveMemory aufgrund seines Potenzials für veraltet erklärt hat Erstellen von Sicherheitsproblemen des Überlauftyps. Alternativ können Sie dies in "reinem" VB mit ein wenig vorsichtigem Zwang unter Verwendung von benutzerdefinierten Typen und LSet erreichen. (Beachten Sie auch, dass es zwei Arten von NaN gibt.)
%Vor%Eine letzte Randnotiz, Sie können NaN auch so erhalten:
%Vor%Diese Seite zeigt eine leicht quälende Art und Weise, dies zu tun. Ich habe es reduziert, um zu entsprechen, was Ihre Frage verlangt, aber nicht gründlich getestet. Lass es mich wissen, wenn es Probleme gibt. Eine Sache, die ich auf dieser Seite bemerkte, war, dass der Code, den sie für ein ruhiges NaN hatten, falsch war, sie sollte die Mantisse mit einem 1-Bit beginnen - sie hatten das mit einem Signal NaN verwechselt.
%Vor%%Vor%
Es verwendet grundsätzlich Kernel-Level-Speicherkopien, um die Bitmuster von einem Byte-Array zum Double zu übertragen.
Sie sollten jedoch beachten, dass es mehrere -Bitwerte gibt, die QNaN darstellen können, insbesondere kann das Vorzeichenbit 0 oder 1 sein und alle Bits der Mantisse außer der ersten können auch sein Null oder 1. Dies kann Ihre Strategie für Vergleiche komplizieren, es sei denn, Sie können feststellen, ob VB6 nur eines der Bitmuster verwendet - es beeinflusst jedoch nicht die Initialisierung dieser Werte, vorausgesetzt VB6 implementiert IEE754-Doubles richtig.