簡體   English   中英

c# 將字節數組重新解釋為短褲數組

[英]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;
}   

然而,實際的問題是您是否真的需要首先這樣做。

使用Buffer.BlockCopy

var shArr = new short[byteArr.Length / 2];
Buffer.BlockCopy(byteArr, 0, shArr, 0, byteArr.Length);

https://dotnetfiddle.net/b9ZolZ

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM