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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace bits
{
    class Program
    {
        static void Main(string[] args)
        {
            // without BitConverter
            uint uintVal = 0;
            
            byte[] arr = {192, 168, 1, 100};
            for (int i = 0; i < 4; i++)
            {
                uintVal = arr[i]; // присваиваю 4 бита в 32-битное число
                uintVal <<= 8; // сдвигаю на 8 бит влево присвоенное выше число освобождая таким образом место для следующего 8-битного числа
            }
            Console.WriteLine(uintVal); // получаю число 25600, а хочется получить 1677830336
 
            // with BitConverter
            uint uintVal2 = BitConverter.ToUInt32(arr, 0);
            Console.WriteLine(uintVal2); // получаю число 1677830336
        }
    }
}

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


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

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

9   голосов , оценка 3.778 из 5
Похожие ответы