Страница 366 из 502
<b> // отрицательным значение, которое ему передается.</b>
<b> static void Neg(MyClass o) {</b>
<b> o.i = -o.i;</b>
<b> }</b>
<b> static void Main() {</b>
<b> MyClass[] nums = new MyClass[5];</b>
<b> nums[0] = new MyClass(5);</b>
<b> nums[1] = new MyClass(2);</b>
<b> nums[2] = new MyClass(3);</b>
<b> nums[3] = new MyClass(4);</b>
<b> nums[4] = new MyClass(1);</b>
<b> Console.Write("Содержимое массива nums: ");</b>
<b> // Выполнить действие для отображения значений.</b>
<b> Array.ForEach(nums, ActionDemo.Show);</b>
<b> Console.WriteLine();</b>
<b> // Выполнить действие для отрицания значений.</b>
<b> Array.ForEach(nums, ActionDemo.Neg);</b>
<b> Console.Write("Содержимое массива nums после отрицания: ");</b>
<b> // Выполнить действие для повторного отображения значений.</b>
<b> Array.ForEach(nums, ActionDemo.Show);</b>
<b> }</b>
<b>}</b>
Ниже приведен результат выполнения этой программы.
<b>Содержимое массива nums: 5 2 3 4 1</b>
<b>Содержимое массива nums после отрицания: -5 -2 -3 -4 -1</b>
Класс BitConverter
В программировании нередко требуется преобразовать встроенный тип данных в массив байтов. Допустим, что на некоторое устройство требуется отправить целое значение, но сделать это нужно отдельными байтами, передаваемыми по очереди. Часто возникает и обратная ситуация, когда данные получаются из устройства в виде упорядоченной последовательности байтов, которые требуется преобразовать в один из встроенных типов. Для подобных преобразований в среде .NET предусмотрен отдельный класс BitConverter.
Класс BitConverter является статическим. Он содержит методы, приведенные в табл. 21.13. Кроме того, в нем определено следующее поле.
<b>public static readonly bool IsLittleEndian</b>
Это поле принимает логическое значение true, если в текущей среде сначала сохраняется младший байт слова, а затем старший. Это так называемый формат с прямым порядком байтов. А если в текущей среде сначала сохраняется старший байт слова, а затем младший, то поле IsLittleEndian принимает логическое значение false. Это так называемый формат с обратным порядком байтов. В компьютерах с процессором Intel Pentium используется формат с прямым порядком байтов.
Таблица 21.13. Методы, определенные в классе BitConverter
Метод - Назначение
public static long DoubleToInt64Bits (double value) - Преобразует значение value в целочисленное значение типа long и возвращает результат
public static byte[] GetBytes (bool value) - Преобразует значение value в однобайтовый массив и возвращает результат
public static byte[] GetBytes (char value) - Преобразует значение value в двухбайтовый массив и возвращает результат
public static byte[] GetBytes (double value) - Преобразует значение value в восьмибайтовый массив и возвращает результат
public static byte[] GetBytes (float value) - Преобразует значение value в четырехбайтовый массив и возвращает результат
public static byte[] GetBytes (int value) - Преобразует значение value в четырехбайтовый массив и возвращает результат
public static byte[] GetBytes (long value) - Преобразует значение value в восьмибайтовый массив и возвращает результат
public static byte[] GetBytes (short value) - Преобразует значение value в двухбайтовый массив и возвращает результат
public static byte[] GetBytes (uint value) - Преобразует значение value в четырехбайтовый массив и возвращает результат
public static byte[] GetBytes (ulong value) - Преобразует значение value в восьмибайтовый массив и возвращает результат
public static byte[] GetBytes(ushort value) - Преобразует значение value в двухбайтовый массив и возвращает результат
public static double Int64BitsToDouble(long value) - Преобразует значение value в значение типа double и возвращает результат
public static bool ToBoolean(byte[] value, int startlndex) - Преобразует байт из элемента массива, указываемого по индексу value [startlndex], в эквивалентное значение типа bool и возвращает результат. Ненулевое значение преобразуется в логическое значение true, а нулевое — в логическое значение false
public static char ToChar(byte[] value, int index) - Преобразует два байта, начиная с элемента массива value [ index], в эквивалентное значение типа char и возвращает результат
public static double - ToDouble(byte[] value, int startlndex) - Преобразует восемь байтов, начиная с элемента массива value [startlndex], в эквивалентное значение типа double и возвращает результат
public static short Tolntl6(byte[] value, int startlndex) - Преобразует два байта, начиная с элемента массива value [startlndex], в эквивалентное значение типа short и возвращает результат
public static int ToInt32(byte[] value, int startlndex) - Преобразует четыре байта, начиная с элемента массива value [startlndex], в эквивалентное значение типа int и возвращает результат
public static long ToInt64(byte[] value, int startlndex) - Преобразует восемь байтов, начиная с элемента массива value [startlndex], в эквивалентное значение типа long и возвращает результат
public static float ToSingle(byte[] value, int startlndex) - Преобразует четыре байта, начиная с элемента массива value [startlndex], в эквивалентное значение типа float и возвращает результат