Frameworkタイトルの通り変換をするための操作の紹介をしたいと思います。誤解を恐れずに言うと、ネットワークにデータを流すときは「ビッグエンディアン」形式、いつも使ってるPC上(のC#の内部表現)では「リトルエンディアン」形式が使われています。ネットワーク上にデータを流すときは「ビッグエンディアン」形式と暗黙的に決まっています。従って、2バイト以上の変数の内容はエンディアンを変換してから送信する必要があります。*1(相手がHTTPでJSONとかではこのような事は意識する必要ないのですが、対向システムがTCP通信の場合、多バイト長のデータ送受信時に必要になります。★変数の中で1バイトごとに並び順が入れ替わっています。多バイト長のデータ内部表現がが1バイトごとに全て逆順になってればOKです。いうわけで、各型で使用できる変換クラスを作成してみました。}}使用方法は以下の通り。変換したい値を引数に指定して戻り値で受けるだけです。戻り値を受けた変数の内容はバイト順序が逆になっています。(数字はめちゃくちゃになります。EndianUtil.Reverse(dsrc);}また、ネットワークから受けた変数も上記のメソッドを通すことによって「ビッグエンディアン」から「リトルエンディアン」のようにバイトを逆順にすることができます。IEnumerable.ToArray()は処理効率が悪め以下のようにするとバイト順序の反転は、見た目が簡単に処理できるのですが、IEnumerable.ToArray()(System.Linq系のメソッド全般に言えることですが)は、処理効率が結構悪いです。メモリは倍使うし、処理速度が2.5倍くらい遅いので、低レイヤーの処理で何万回も呼び出される箇所に以下のような処理を記述すると思わぬボトルネックになったりするため、そういった場合避けた方が賢明です。Convert.ToInt32(BitConverter.GetBytes(value).Reverse().ToArray());*1:エンディアンの概念や詳細はほかサイトを参照ください。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。Core3.xとUnityでAES暗号化を利用するC#の標準機能でデータを圧縮・展開するC#で属性を利用して処理に制約の説明を追加するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。