Что мне отдает BitConverter.ToUInt32? - C#

Узнай цену своей работы

Формулировка задачи:

Тестирую вот такой вот незамысловатый код, который естественно писал не я иначе бы понимал что он делает...
Листинг программы
  1. var myIp = BitConverter.ToUInt32(new byte[] { 192, 168, 16, 31 }, 0);
  2. Console.WriteLine(myIp);
Отдает он мне вот это: 521185472 Эти цифры заставили задуматься о нескольких вещах: 1. Что такое 521185472 ? Почему 521185472, а не 1921681631 ? 2. Я правильно понимаю что я выделяю память new byte[] массиву байтов { 192, 168, 16, 31 } ? 3. Зачем я передаю ноль вторым параметром? 4. Я правильно понимаю, что приведенный выше код преобразует массив байтов в базовый тип (в нашем случае Int32) ? 5. Что такое массив байтов и чем он отличается от массива интов например?

Решение задачи: «Что мне отдает BitConverter.ToUInt32?»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace bits
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             // without BitConverter
  13.             uint uintVal = 0;
  14.            
  15.             byte[] arr = {192, 168, 1, 100};
  16.             for (int i = 0; i < 4; i++)
  17.             {
  18.                 uintVal = arr[i]; // присваиваю 4 бита в 32-битное число
  19.                 uintVal <<= 8; // сдвигаю на 8 бит влево присвоенное выше число освобождая таким образом место для следующего 8-битного числа
  20.             }
  21.             Console.WriteLine(uintVal); // получаю число 25600, а хочется получить 1677830336
  22.  
  23.             // with BitConverter
  24.             uint uintVal2 = BitConverter.ToUInt32(arr, 0);
  25.             Console.WriteLine(uintVal2); // получаю число 1677830336
  26.         }
  27.     }
  28. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы