相关疑难解决方法(0)

在C#中使用字节数组

我有一个字节数组,代表一个完整的TCP/IP数据包.为了澄清,字节数组的排序如下:

(IP标头 - 20字节)(TCP标头 - 20字节)(有效负载 - X字节)

我有一个Parse接受字节数组并返回一个TCPHeader对象的函数.它看起来像这样:

TCPHeader Parse( byte[] buffer );
Run Code Online (Sandbox Code Playgroud)

给定原始字节数组,这是我现在调用此函数的方式.

byte[] tcpbuffer = new byte[ 20 ];
System.Buffer.BlockCopy( packet, 20, tcpbuffer, 0, 20 );
TCPHeader tcp = Parse( tcpbuffer );
Run Code Online (Sandbox Code Playgroud)

有没有一种方便的方法可以将TCP字节数组(即完整TCP/IP数据包的字节20-39)传递给Parse函数,而无需先将其提取到新的字节数组?

在C++中,我可以执行以下操作:

TCPHeader tcp = Parse( &packet[ 20 ] );
Run Code Online (Sandbox Code Playgroud)

C#中有类似的东西吗?我想尽可能避免临时字节数组的创建和后续垃圾收集.

.net c# networking bytearray .net-3.5

13
推荐指数
2
解决办法
4万
查看次数

创建一个仅指向另一个数组的一部分的数组?

我有一个包含引用类型元素的巨大数组,我想创建许多其他数组,这些数组基本上只指向那个大数组的特定部分.

换句话说,我想创建"索引器"或"长度指针".

在C++中,使用指针很容易,并为每个指针分配一个长度,例如创建一个包含长度指针的结构.

我怎样才能在C#/ .NET中实现这一目标?

重点是避免复制任何东西,我只想指向已经存在于内存中的数组中的特定部分.

有任何想法吗?

c# arrays pointers

5
推荐指数
2
解决办法
1232
查看次数

标签 统计

c# ×2

.net ×1

.net-3.5 ×1

arrays ×1

bytearray ×1

networking ×1

pointers ×1