Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 0
Регистрация: 24.07.2014
Сообщений: 44

Ошибка IPAddress.ToString()!?

13.01.2019, 21:55. Показов 2706. Ответов 43
Метки нет (Все метки)

C#
1
2
IPAddress ip = new IPAddress(1);
Console.WriteLine($"{ip.ToString()}");
Выдаёт IP "1.0.0.0".

Как это понимать?

Должно выдать 0.0.0.1 или я что-то не понимаю?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2019, 21:55
Ответы с готовыми решениями:

При вычислении выражения ++i.ToString() сначала вычисляется ToString(), а потом ++
При вычислении выражения ++i.ToString() сначала вычисляется ToString(), а потом ++. Соответственно, это не работает, работает...

Разница между string.Concat(x,y) и x.ToString()+y.ToString()
Вроде как одно и то же, но дает разные результаты в операции поиска палиндромов. К примеру, взять число 1010: ...

Ошибка при переопределении ToString()
Здравствуйте, уважаемые форумчане. Имеется 2 класса: Commodity(абстрактный), Product В каждом из классов переопределен метод ToString(). ...

43
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
14.01.2019, 02:45
kolorotur, я исходил из того, что не получилось спарсить Convert.ToInt32(new byte[] {255, 255, 255, 255}).
К тому же, int.Max - имеет все разряды в 1, кроме старшего.
Однако вот int.Min ломает мою теорию, старший бит - 1, все остальные - 0.
Получается для всего диапазона целых чисел, кроме int.Min так оно и есть, разве нет?
0
14.01.2019, 03:21

Не по теме:

Возможно вам стоит посмотреть на исходник IPAddress.cs?
https://referencesource.micros... c3b2dc55c7

0
2 / 2 / 0
Регистрация: 24.07.2014
Сообщений: 44
14.01.2019, 05:52  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Держите.

C#
1
2
3
4
5
6
7
8
9
10
static IEnumerable<IPAddress> EnumerateIpRange(IPAddress from, IPAddress to)
{
* * var buffer = from.GetAddressBytes();
* * do
* * {
* * * * yield return from = new IPAddress(buffer);
* * * * int i = buffer.Length - 1;
* * * * while (i >= 0 && ++buffer[i] == 0) i--;
* * } while (!from.Equals(to));
}
Метод перечисляет все IP-адреса в диапазоне между from и to:
C#
1
2
3
4
var from = IPAddress.Parse("0.0.0.0");
var to = IPAddress.Parse("255.255.255.255");
foreach (var ip in EnumerateIpRange(from, to))
* * Console.WriteLine(ip);
Спасибо! Вот это я понимаю крутой код! Я был уверен, что возможно пройтись циклом по IP раз это число, а посмотреть на реализацию ещё интереснее! Так же был уверен, что получится хардкорный код, что и оказалось.
Но моя реализация и легче читается и быстрее работает). Кроме того, с помощью моей реализации можно посчитать и количество IP в диапазоне без дополнительного кода.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
14.01.2019, 10:32
Цитата Сообщение от IamRain Посмотреть сообщение
Получается для всего диапазона целых чисел, кроме int.Min так оно и есть, разве нет?
Нет, конечно
Если бы старший бит был только для знака, то если единица — это 0000 0000 0000 0000 0000 0000 0000 0001, то -1 должна бы быть 1000 0000 0000 0000 0000 0000 0000 0001. Аналогично с другими числами из диапазона, а вы сами убедились, что это не так.

Правильнее эти типы рассматривать как функцию (бинарное отношение), где областью определения являются десятичные числа от -2147483648 до 2147483647 (для знаковых типов), а областью значений — комбинации из 32-х битов от 0000 0000 0000 0000 0000 0000 0000 0000 до 1111 1111 1111 1111 1111 1111 1111 1111. Ну или наоборот, поскольку функция биективна.

Все комбинации от 0000 0000 0000 0000 0000 0000 0000 0000 до 0111 1111 1111 1111 1111 1111 1111 1111 соответствуют значениям от нуля до 2147483647, а комбинации от 1000 0000 0000 0000 0000 0000 0000 0000 до 1111 1111 1111 1111 1111 1111 1111 1111 — значениям от -2147483648 до -1.

А то, что комбинации битов соответствуют десятичным значениям таким образом, что хорошо работает арифметика и по старшему биту можно определить знак числа — это уже деталь реализации и приятный бонус

Вот во float/double/decimal — там да, старший бит по-честному определяет знак.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2019, 10:32

Sockets , IPAddress
Имею такой вот фрагмент кода : IPAddress ipa = Dns.GetHostAddresses(&quot;Q-PC&quot;); for(int i = 0;i &lt;...

Из string в IPAddress
Уважаемые форумчане. Собственно суть вопроса в названии... как?

Как отсеять ip-v4 из IPAddress
дело в том, что Dns.GetHostAddresses загоняет в IPAddress сначала ipv6, а потом для того же подключения ipv4. если на компе одно сетевое...

Как проинитить Dictionary<string,IPAddress>
Надо проинициализировать: private const Dictionary&lt;string,IPAddress&gt; url = new Dictionary&lt;string,IPAddress&gt; ...

Как получить IPAddress сокета, отправившего сообщение
Добрый вечер, работаю над клиент-серверным приложением. И столкнулась с такой проблемой, мне нужно узнать ip адрес с которого отправили...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru