C#中如何让byte[]去除后面的0
时间: 2024-11-15 11:24:33 浏览: 12
C#中去除`byte[]`数组尾部的零(0x00)有多种方法。这里有两个示例:
1. **使用`ToList()`转换并遍历**[^1]:
```csharp
public byte[] bytesTrimEnd(byte[] bytes)
{
List<byte> list = bytes.ToList();
for (int i = bytes.Length - 1; i >= 0; i--)
{
if (bytes[i] == 0x00)
list.RemoveAt(i);
}
return list.ToArray();
}
```
这个方法将byte数组转换为List,然后从后往前查找并移除所有0x00。
2. **直接遍历不创建临时数组**:
```csharp
public byte[] CutTail(byte[] byList)
{
int j = 0;
for (int i = byList.Length - 1; i >= 0; i--)
{
if (byList[i] != 0x00 && j == 0)
{
j = i;
}
if (j > 0)
{
byList[j] = byList[i];
i--;
}
}
return byList.Take(j + 1).ToArray();
}
```
这段代码同样从后往前遍历,但只在找到非零元素时更新索引位置,从而避免了创建新的临时数组。
阅读全文