Как преобразовать массивы UInt32[] и Int32[] в байтовые массивы?C#

Место общения программистов C#
Ответить
Anonymous
 Как преобразовать массивы UInt32[] и Int32[] в байтовые массивы?

Сообщение Anonymous »

Пытаюсь создать функцию, которая преобразует объекты в байтовые массивы (без дополнительных затрат/метаданных, таких как BinaryFormatter). Думаю, меня устраивает следующий код, за исключением его способности преобразовывать массивы UInt32[] и массивы Int32[] в массив байтов.

Код: Выделить всё

private byte[] ObjectToByteArray(object obj)
{
string dataType = obj.GetType().Name;
switch (dataType)
{
case "Byte[]": // an array of bytes
return (byte[])obj;
case "String": // a null-terminated ASCII string
return Encoding.ASCII.GetBytes((string)obj);
case "UInt16": // an array of unsigned short (16-bit) integers
return BitConverter.GetBytes((ushort)obj);
case "UInt32": // an array of unsigned long (32-bit) integers
return BitConverter.GetBytes((uint)obj);
case "UInt32[]": // an array of pairs of unsigned long (32-bit) integers
//return BitConverter.GetBytes((ushort)obj);
return null;
case "Int32": // an array of signed long (32-bit) integers
return BitConverter.GetBytes((int)obj);
case "Int32[]": // an array of pairs of signed long (32-bit) integers
//return BitConverter.GetBytes((int)obj);
return null;
default:
throw new Exception($"The type of value ({dataType}) is not supported.");
}
}
Я думал о том, чтобы сделать что-то вроде простого цикла для каждых 4 байтов и продолжать добавлять их в массив байтов, но не был уверен, сработает ли это или даже будет ли это лучшим подходом. Я даже не уверен, что мой нынешний метод — лучший подход к тому, что я уже сделал. Кажется, все, что я нашел в Интернете, сбивает меня с толку и кружит голову при преобразовании типов данных.

Подробнее здесь: https://stackoverflow.com/questions/791 ... yte-arrays
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»