Преобразование массива байтов в Int-likes в C#
Вопрос
Конвертер битов.ToUInt16() ожидает, что байты будут перевернуты, я предполагаю, что именно так они хранятся в памяти.Но как я могу преобразовать его, если он не отменен, без изменения массива?
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
Решение
Звучит так, будто ты хочешь моего EndianBitConverter
в MiscUtil
, который позволяет вам указать, хотите ли вы использовать большой или маленький порядковый номер.
По сути, он обеспечивает ту же функциональность, что и BitConverter
но как методы экземпляра.Затем вы получаете соответствующий вид EndianBitConverter
и делай с ним, что хочешь.
(Это предоставляет немного больше функциональности для эффективной работы с массивами, которая может быть вам полезна, а может и не быть.)
Библиотека имеет открытый исходный код по довольно разрешительной лицензии.
Другие советы
Вы также можете использовать IP-адрес.HostToNetworkOrder.
Я думаю, что вашим лучшим решением было бы поменять местами массив с Array.Обратный метод.
http://msdn.microsoft.com/en-us/library/system.array.reverse (ПРОТИВ 71).aspx