1

を使用するよりもこれを書く良い方法はありBitConverterますか?

public static class ByteArrayExtensions
{

    public static int IntFromUInt24(this byte[] bytes)
    {
        if (bytes == null)
        {
            throw new ArgumentNullException();
        }

        if (bytes.Length != 3)
        {
            throw new ArgumentOutOfRangeException
                ("bytes", "Must have length of three.");
        }

        return BitConverter.ToInt32
                    (new byte[] { bytes[0], bytes[1], bytes[2], 0 }, 0);
    }

}
4

1 に答える 1

3

私は使用します:

return bytes[2]<<16|bytes[1]<<8|bytes[0];

エンディアンに注意してください: このコードは、リトル エンディアンの 24 ビット数値でのみ機能します。

一方、BitConverter はネイティブのエンディアンを使用します。したがって、すべてのビッグエンディアンシステムでは機能しません。

于 2010-10-15T21:54:12.307 に答える