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;
|
||
}
|
||
} |