c#如何将字节数组添加到字节数组中

hs2*_*s2d 16 c# bytearray

如何在现有字节数组的开头添加一个字节?我的目标是使数组长3个字节到4个字节.所以这就是为什么我需要在它的开头添加00填充.

Guf*_*ffa 44

你不能这样做.无法调整阵列大小.您必须创建一个新数组并将数据复制到它:

bArray = addByteToArray(bArray,  newByte);
Run Code Online (Sandbox Code Playgroud)

码:

public byte[] addByteToArray(byte[] bArray, byte newByte)
{
    byte[] newArray = new byte[bArray.Length + 1];
    bArray.CopyTo(newArray, 1);
    newArray[0] = newByte;
    return newArray;
}
Run Code Online (Sandbox Code Playgroud)

  • `Array.Resize(ref bArray,bArray.Length + 1)` (3认同)

Tyl*_*zes 15

正如这里的许多人所指出的那样,C#中的数组以及大多数其他常见语言中的数组都是静态大小的.(!和类型)如果你正在寻找的东西更像是PHP的数组,我只是去猜测你,因为它是一个流行的语言与动态大小的数组,你应该使用ArrayList:

var mahByteArray = new ArrayList<byte>();
Run Code Online (Sandbox Code Playgroud)

如果您有其他地方的字节数组,则可以使用AddRange函数.

mahByteArray.AddRange(mahOldByteArray);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Add()和Insert()来添加元素.

mahByteArray.Add(0x00); // Adds 0x00 to the end.
mahByteArray.Insert(0, 0xCA) // Adds 0xCA to the beginning.
Run Code Online (Sandbox Code Playgroud)

需要回到阵列中吗?.ToArray()让你满意!

mahOldByteArray = mahByteArray.ToArray();
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用FYI ArrayList,而选择List <T>.除非必须与使用它的旧API接口,否则不应在面向.NET> = 2.0的新代码中使用ArrayList. (3认同)

Jas*_*ams 6

数组无法调整大小,因此您需要分配一个更大的新数组,在其开头写入新字节,并使用Buffer.BlockCopy传输旧数组的内容.

  • 怎么样[Array.Resize()](http://msdn.microsoft.com/en-us/library/bb348051.aspx) (2认同)

Jam*_*urz 5

为了防止每次重新复制数组效率不高

怎么样使用Stack

csharp> var i = new Stack<byte>();
csharp> i.Push(1);
csharp> i.Push(2); 
csharp> i.Push(3); 
csharp> i; { 3, 2, 1 }

csharp> foreach(var x in i) {
  >       Console.WriteLine(x);
  >     }
Run Code Online (Sandbox Code Playgroud)

3 2 1