Что мне отдает BitConverter.ToUInt32? - C#
Формулировка задачи:
Тестирую вот такой вот незамысловатый код, который естественно писал не я иначе бы понимал что он делает...
Отдает он мне вот это: 521185472
Эти цифры заставили задуматься о нескольких вещах:
1. Что такое 521185472 ? Почему 521185472, а не 1921681631 ?
2. Я правильно понимаю что я выделяю память new byte[] массиву байтов { 192, 168, 16, 31 } ?
3. Зачем я передаю ноль вторым параметром?
4. Я правильно понимаю, что приведенный выше код преобразует массив байтов в базовый тип (в нашем случае Int32) ?
5. Что такое массив байтов и чем он отличается от массива интов например?
var myIp = BitConverter.ToUInt32(new byte[] { 192, 168, 16, 31 }, 0); Console.WriteLine(myIp);
Решение задачи: «Что мне отдает 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 } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д