Преобразование байтового массива в Int-like в C # - PullRequest
0 голосов
/ 29 апреля 2009

BitConverter.ToUInt16 () ожидает, что байты будут сторнированы, я думаю, именно так они и хранятся в памяти. Но как я могу преобразовать его, если он не перевернут, без изменения массива?

Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006

Ответы [ 3 ]

4 голосов
/ 29 апреля 2009

Звучит так, как будто вы хотите мой EndianBitConverter в MiscUtil, который позволяет вам указать, хотите ли вы использовать большой или маленький порядок байтов.

По сути, он обеспечивает ту же функциональность, что и BitConverter, но как методы экземпляра. Затем вы получаете соответствующий тип EndianBitConverter и делаете с ним все, что хотите.

(Он обеспечивает немного больше функциональности для эффективной работы с массивами, что может или не может быть полезным для вас.)

Библиотека имеет открытый исходный код по довольно разрешительной лицензии.

0 голосов
/ 29 апреля 2009

Вы также можете использовать IPAddress.HostToNetworkOrder.

0 голосов
/ 29 апреля 2009

Я думаю, что вам лучше всего было бы обратить массив с помощью метода Array.Reverse.

http://msdn.microsoft.com/en-us/library/system.array.reverse(VS.71).aspx

...