C# list<byte> 第一个不是特定字符的位置
时间: 2023-12-08 21:06:05 浏览: 120
你可以使用 List<T>.FindIndex 方法来查找第一个不是特定字符的位置。具体来说,你需要传递一个谓词(Predicate<T>)作为参数,该谓词将用于测试列表中的每个元素。这样,你可以编写以下代码:
```csharp
List<byte> byteList = new List<byte> { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03 };
int index = byteList.FindIndex(b => b != 0x00);
```
在这个例子中,我们创建了一个 List<byte>,其中包含一些 0x00 字节和一些不是 0x00 字节的字节。然后,我们使用 FindIndex 方法来查找第一个不是 0x00 的字节的位置。FindIndex 方法将返回一个整数,该整数指定了第一个满足谓词的元素的索引,如果没有元素满足谓词,则返回 -1。在此示例中,FindIndex 方法将返回 1,因为 0x01 是第一个不是 0x00 的字节。
相关问题
C# List<Byte> 修改最后一个字符
如果你想修改 `List<byte>` 中的最后一个元素,可以使用 `Count` 属性获取元素数量,然后使用索引访问最后一个元素。下面是一个示例代码:
```csharp
List<byte> byteList = new List<byte>() { 65, 66, 67, 68, 69 };
byteList[byteList.Count - 1] = 90;
```
在上面的代码中,`byteList` 是包含字节的列表。`byteList.Count` 返回列表中的元素数量,`byteList.Count - 1` 返回最后一个元素的索引。通过将索引 `byteList.Count - 1` 传递给 `byteList`,可以访问和修改最后一个元素。在本例中,将最后一个元素的值从 `69` 修改为 `90`。
注意:在使用索引访问 `List<byte>` 中的元素时,请确保列表不为空以避免抛出 `ArgumentOutOfRangeException` 异常。
C# list<byte> 去除前面重复字符
你可以使用 LINQ 库中的 SkipWhile 方法来去除列表中前面的重复字符。具体来说,你可以编写以下代码:
```csharp
List<byte> byteList = new List<byte> { 0x00, 0x00, 0x00, 0x01, 0x02, 0x03 };
byteList = byteList.SkipWhile(b => b == byteList[0]).ToList();
```
在这个例子中,我们创建了一个 List<byte>,其中包含一些重复的 0x00 字节和一些其他字节。然后,我们使用 SkipWhile 方法来跳过列表中前面的重复字节。SkipWhile 方法将返回一个 IEnumerable<T>,其中包含从第一个不满足谓词的元素开始的所有元素。我们将其转换为 List<byte>,以便我们可以像以前一样操作它。在此示例中,SkipWhile 方法将返回一个包含 0x01、0x02 和 0x03 的 IEnumerable<byte>,然后我们将其转换为 List<byte>。现在,byteList 中的前面重复字符已经被去除了。
阅读全文