Вопрос

Конвертер битов.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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top