有没有比使用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);
}
}
答案 0 :(得分:3)
我会用:
return bytes[2]<<16|bytes[1]<<8|bytes[0];
注意字节顺序:此代码仅适用于小端24位数字。
另一方面,BitConverter使用本机字节序。所以你的能力不适用于所有大端系统。