Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1158 of 1492 menu
◀ ▶

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,
    класс с парой методов для битов
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить