質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top