如何从字节数组中删除空值?

发布于 2024-09-13 16:08:48 字数 462 浏览 10 评论 0原文

由于某种原因,BeginReceive 的字节数组输出先填充了空值,然后填充了数据。

BeginReceive:

AsyncResult = connectSocket.BeginReceive(RecvBuffer2,
                                          0, RecvBuffer2.Length,
                                          SocketFlags.None,
                                          OnDataRecvCallback, null);

字节数组声明:

public static byte[] RecvBuffer2 = new byte[9999];

如何删除空值并保留其余数据?

For some reason, the byte array output of BeginReceive fills up with nulls and then the data.

BeginReceive:

AsyncResult = connectSocket.BeginReceive(RecvBuffer2,
                                          0, RecvBuffer2.Length,
                                          SocketFlags.None,
                                          OnDataRecvCallback, null);

Byte Array declaration:

public static byte[] RecvBuffer2 = new byte[9999];

How to remove the nulls and keep the rest of the data?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别念他 2024-09-20 16:08:48

应该可以用 LINQ 实现。未经测试,因为我现在没有可用的 Visual Studio,但它应该是这样的:

var usefulBuffer = RecvBuffer2.SkipWhile(x => x == 0).ToArray()

Should be doable with LINQ. Untested, since I don't have Visual Studio available right now, but it should be something like this:

var usefulBuffer = RecvBuffer2.SkipWhile(x => x == 0).ToArray()
滿滿的愛 2024-09-20 16:08:48

我们可以将 Heinzi 的答案修改为

  RecvBuffer2= RecvBuffer2.Where(x => x != 0).ToArray();

现在不需要反转数组。

解决方案的关键是 C# 谓词。

We can modify Heinzi's Answer to

  RecvBuffer2= RecvBuffer2.Where(x => x != 0).ToArray();

Now there is no need to reverse the array.

The key to the solution is c# predicate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文