Einzelnen Beitrag anzeigen

Dax
(Gast)

n/a Beiträge
 
#6

Re: Migration nach .NET: Bit-Operatoren und Double

  Alt 2. Nov 2007, 18:27
Falls du nicht den unsafe-Code-Umweg, den Christian vorschlägt, gehen willst, könnte folgendes funktionieren. Ich hoffe, Delphi untersützt sowas, ansonsten nutze direkt den C#-Code (falls er denn funktioniert)
Code:
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Explicit)]
struct DoubleInt64Union
{
  [FieldOffset(0)]
  public readonly double Double;
  [FieldOffset(0)]
  public readonly long Int64;

  public DoubleInt64Union(double d)
  {
    this.Double = d;
  }

  // Zum Vergleich, das BitConverter-Teil
  public static unsafe long DoubleToInt64Bits(double value)
  {
    return *((long*)&value); // <- das hast du in Delphi auch getan
  }
}
Das ist im Prinzip das selbe wie variante Records in Delphi, und du kannst wie gehabt das Int64-Feld mit deinem $(0|8)0* vergleichen.
  Mit Zitat antworten Zitat