2009-04-29 6 views
0

BitConverter.ToUInt16()は、バイトを逆にすることを想定しています。しかし、それを逆にしていないときに、どのように変換することができますか?Byte配列をC#のInt-likesに変換する

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

答えて

4

ですね、私、あなたがビッグまたはリトルエンディアンを使用するかどうかを指定できますEndianBitConverterMiscUtilで、。

基本的にBitConverterと同じ機能を提供しますが、インスタンスメソッドと同じ機能を提供します。あなたはEndianBitConverterの適切な種類を取得し、あなたがそれで欲しいものを行います。

は(それはあるいはあなたにとって有用であってもなくてもよいアレイを、効率的に作業するための少しより多くの機能を提供します。)

ライブラリはかなり寛容なライセンスの下でオープンソース化です。

+0

「これを変更したいのであれば、jon skeetがあなたのコードをよく知っていて、あなたのコードに合わせてこれを既に最適化しているので」かなり許可された意味ですか? –

-1

私はあなたの最善の呼び出しは、Array.Reverseメソッドを使用して配列を逆転させることだと思います。あなたが望むように

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

+0

これは、各Int16のバイトだけでなく、配列全体を逆にします。 –

+0

ジョンの権利、それは私が避けようとしていたものです。しかし、返信thnx! – flamey

0

また、IPAddress.HostToNetworkOrderを使用することもできます。

関連する問題