C#でバイト配列をInt-likesに変換する
質問
BitConverter.ToUInt16()は、バイトが逆になることを期待しています。これがメモリに格納される方法だと思います。しかし、配列を変更せずに、逆になっていないときに変換するにはどうすればよいですか?
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
解決
MiscUtil <の
。ビッグエンディアンを使用するか、リトルエンディアンを使用するかを指定できます。 EndianBitConverter
が欲しいようです/ code>
基本的には、 BitConverter
と同じ機能をインスタンスメソッドとして提供します。次に、適切な種類の EndianBitConverter
を取得して、必要な処理を行います。
(配列を効率的に操作するためのもう少しの機能を提供します。これはあなたにとって役に立たないかもしれません。)
ライブラリは、かなり寛容なライセンスの下でオープンソース化されています。
他のヒント
IPAddress.HostToNetworkOrderも使用できます。
最良の呼び出しは、Array.Reverseメソッドで配列を逆にすることだと思います。
http:// msdn。 microsoft.com/en-us/library/system.array.reverse(VS.71).aspx
所属していません StackOverflow