C#中的unsigned char指针?

时间:2011-01-29 15:06:12

标签: c# c++ pointers unsigned-char

在将一些代码从C ++转换为C#的过程中,我找到了这个,

unsigned char *p = m_pRecvBuffer + 5;
unsigned int noncelen1 = *p * 256 + p[1];

如何将其转换为C#? m_pRecvBuffer是一个char数组,但我将其存储为字节数组。

4 个答案:

答案 0 :(得分:2)

嗯,我想知道是否有一些重构是为了这段代码。是的,您可以使用pointers in C#。但是,根据该片段,可能会有更好的选择。看起来你正在尝试读取传入流的部分内容。也许C#的stream library对你的这段代码更有效?

答案 1 :(得分:2)

您分析代码实际执行的操作并转换行为,而不是代码。虽然您可以在c#中使用unsafe方法和指针算法,但这可能会产生比解决方案更多的问题。

答案 2 :(得分:1)

类似于

的东西
byte[] p = new byte[m_pRecvBuffer.Length - 5];
Array.Copy(m_precvBuffer, p, m_pRecvBuffer.Length - 5);
uint noncelen1 = p[0] * 256 + p[1];

但在这种情况下,我认为你实际上不需要使用数组副本。只是使用

uint noncelen1 = p[5] * 256 + p[6];

应该足够了,我想。

答案 3 :(得分:0)

假设RecvBuffer被声明为byte [],你可以这样做:

int noncelen1 = RecvBuffer[5] * 256 + RecvBuffer[6];