DoubleToInt64Bits
DoubleToInt64Bits переводит double
в long с тем же двоичным содержимым.
Обратно служит Int64BitsToDouble -
пара методов у BitConverter,
не у Convert. Для байтового буфера
используют
GetBytes
и ToDouble.
Синтаксис
long bits = BitConverter.DoubleToInt64Bits(1.0);
double back = BitConverter.Int64BitsToDouble(bits);
Пример
Давайте round-trip для 1.0 через биты:
using System;
using System.Globalization;
class Program
{
static void Main()
{
long bits = BitConverter.DoubleToInt64Bits(1.0);
double res = BitConverter.Int64BitsToDouble(bits);
Console.WriteLine(res.ToString(CultureInfo.InvariantCulture));
}
}
Результат выполнения кода:
"1"
Пример
Давайте сравним биты с байтами от
GetBytes на little-endian:
using System;
class Program
{
static void Main()
{
long bits = BitConverter.DoubleToInt64Bits(1.0);
byte[] data = BitConverter.GetBytes(1.0);
long fromBytes = BitConverter.ToInt64(data, 0);
Console.WriteLine(bits == fromBytes);
}
}
Результат выполнения кода:
True
Пример
Давайте восстановим 12345.5 из битов:
using System;
using System.Globalization;
class Program
{
static void Main()
{
long bits = BitConverter.DoubleToInt64Bits(12345.5);
double res = BitConverter.Int64BitsToDouble(bits);
Console.WriteLine(res.ToString(CultureInfo.InvariantCulture));
}
}
Результат выполнения кода:
"12345.5"
Смотрите также
-
метод
ToDouble,
который читаетdoubleиз восьми байт -
метод
ToInt64,
который собираетlongиз байт -
метод
GetBytes,
который кодируетdoubleв массив -
BitConverter,
класс с парой методов для битов