27 lines
885 B
C#
27 lines
885 B
C#
|
|
using System.Buffers.Binary;
|
|||
|
|
|
|||
|
|
namespace Cowain.Base.Extensions;
|
|||
|
|
|
|||
|
|
public static class ShortArrayExtensions
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 将 short[] 转换为 byte[],并可选择大小端。
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="src">源数组</param>
|
|||
|
|
/// <param name="asLittleEndian">true 为小端,false 为大端</param>
|
|||
|
|
public static byte[] ToByteArray(this short[] src, bool asLittleEndian = true)
|
|||
|
|
{
|
|||
|
|
if (src == null) throw new ArgumentNullException(nameof(src));
|
|||
|
|
|
|||
|
|
var dst = new byte[src.Length * sizeof(short)];
|
|||
|
|
for (int i = 0; i < src.Length; i++)
|
|||
|
|
{
|
|||
|
|
var span = dst.AsSpan(i * sizeof(short));
|
|||
|
|
if (asLittleEndian)
|
|||
|
|
BinaryPrimitives.WriteInt16LittleEndian(span, src[i]);
|
|||
|
|
else
|
|||
|
|
BinaryPrimitives.WriteInt16BigEndian(span, src[i]);
|
|||
|
|
}
|
|||
|
|
return dst;
|
|||
|
|
}
|
|||
|
|
}
|