Всем известно, что хранение IP в виде числа это удобно, как минимум тем, что поиск по числу производится гораздо быстрее, чем по строке
Ниже приведены пару примеров конвертирования IP в число и обратно, используя стандартные .NET классы и MS SQL 2008
C#
string address = "192.168.0.1";
int intAddress = BitConverter.ToInt32(IPAddress.Parse(address).GetAddressBytes(), 0);
string ipAddress = new IPAddress(BitConverter.GetBytes(intAddress)).ToString();
Console.WriteLine(intAddress);
Console.WriteLine(ipAddress);
T-SQL
declare @address varchar(15) = '192.168.0.1'
declare @t bigint = 0
set @t =
cast(PARSENAME(@address, 4) as bigint) +
256 * cast(PARSENAME(@address, 3) as bigint) +
power(256, 2) * cast(PARSENAME(@address, 2) as bigint) +
power(256, 3) * cast(PARSENAME(@address, 1) as bigint)
SELECT @t
Результат один и тот же: 192.168.0.1 => 16820416
А в C# вы видите и обратное преобразование, класс IPAddress принимает в конструкторе числовое представление IP адреса, сформированное как раз по логике, отображенной в SQL запросе
Комментариев нет:
Отправить комментарий
Можете оставить свой комментарий