[英]c# reinterpret an array of bytes as an array of shorts
如果可能,我想在 C# 中复制以下 C 逻辑:
void f(unsigned char *byteArr)
{
short *shArr = (short*)byteArr; // shArr[0] = -8, shArr[1] = -265
}
unsigned char byteArr[4];
byteArr[0] = 248;
byteArr[1] = 255;
byteArr[2] = 247;
byteArr[3] = 254;
f(byteArr);
所以在 C# 中我有
void f(byte[] byteArr)
{
short[] shArr = ?
}
并希望 shArr 为{-8, -265}
。 (这怎么可能?
显然,您想将字节数组重新解释为短裤数组。
最简单的方法是使用Span
:
static void Main(string[] args)
{
byte[] byteArr = new byte[] { 248, 255, 247, 254 };
Console.WriteLine(byteArr[2]);
f(byteArr);
Console.WriteLine(byteArr[2]);
}
private static void f(byte[] byteArr)
{
Span<short> shArr = MemoryMarshal.Cast<byte, short>(byteArr);
shArr[1] = 42;
}
然而,实际的问题是您是否真的需要首先这样做。
var shArr = new short[byteArr.Length / 2];
Buffer.BlockCopy(byteArr, 0, shArr, 0, byteArr.Length);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.