11

次のコードを使用して BigEndian 情報を読み取りますBinaryReaderが、それが効率的な方法であるかどうかはわかりません。より良い解決策はありますか?

これが私のコードです:

// some code to initialize the stream value
// set the length value to the Int32 size
BinaryReader reader =new BinaryReader(stream);
byte[] bytes = reader.ReadBytes(length);
Array.Reverse(bytes);
int result = System.BitConverter.ToInt32(temp, 0);
4

3 に答える 3

12

BitConverter.ToInt32そもそも速くない。私は単に使用します

public static int ToInt32BigEndian(byte[] buf, int i)
{
  return (buf[i]<<24) | (buf[i+1]<<16) | (buf[i+2]<<8) | buf[i+3];
}

一度に 4 バイトを超える読み取りを検討することもできます。

于 2013-01-18T14:46:25.123 に答える
1

IPAddress.NetworkToHostOrderを使用できますが、実際により効率的かどうかはわかりません。プロファイリングする必要があります。

于 2013-01-18T14:45:35.130 に答える