C#中的无符号字符指针? 在将C++中的一些代码转换成C时,我发现, unsigned char *p = m_pRecvBuffer + 5; unsigned int noncelen1 = *p * 256 + p[1];

C#中的无符号字符指针? 在将C++中的一些代码转换成C时,我发现, unsigned char *p = m_pRecvBuffer + 5; unsigned int noncelen1 = *p * 256 + p[1];,c#,c++,pointers,unsigned-char,C#,C++,Pointers,Unsigned Char,如何将其转换为C#m_pRecvBuffer是一个字符数组,但是我将它存储为一个字节数组。Hmm我想知道是否需要对这段代码进行重构。是的,你可以用。然而,基于这个片段,可能有更好的选择。看起来您正在尝试读取传入流的一部分。也许C#对这段代码更有效?嗯,我想知道这段代码是否需要重构。是的,你可以用。然而,基于这个片段,可能有更好的选择。看起来您正在尝试读取传入流的一部分。也许C#更适合您的这段代码?您需要分析代码的实际功能并转换行为,而不是代码。虽然您可以在c#中使用不安全的方法和指针算法,但这可

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

Hmm我想知道是否需要对这段代码进行重构。是的,你可以用。然而,基于这个片段,可能有更好的选择。看起来您正在尝试读取传入流的一部分。也许C#对这段代码更有效?

嗯,我想知道这段代码是否需要重构。是的,你可以用。然而,基于这个片段,可能有更好的选择。看起来您正在尝试读取传入流的一部分。也许C#更适合您的这段代码?

您需要分析代码的实际功能并转换行为,而不是代码。虽然您可以在c#中使用不安全的
方法和指针算法,但这可能会产生比它所能解决的问题更多的问题。

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

类似于

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];
我想应该足够了。

类似于

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];

我想应该足够了。

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

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

假设RecvBuffer被声明为byte[],您将执行如下操作:

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

是的,我知道这一点。但是,由于我比C ++知道更多的C,并且不能调试给定的代码,所以我把我的头绕在这个头上的第一步是让它在C++中工作,然后把它重构成一些东西。我也遇到了同样的问题,我原本以为这是数组索引,但我无法确定。是的,我知道这一点。但是,由于我比C ++知道更多的C,并且不能调试给定的代码,所以我把我的头绕在这个头上的第一步是让它在C++中工作,然后把它重构成一些东西。我也遇到了同样的问题,我本来以为这是数组索引,但我无法确定。我走这条路是因为它类似于我已经编写的代码。@北海道:如果你像这样声明一个新的字节数组,然后复制数据,这比我发布的答案效率要低得多。没有理由分配内存或复制数组。@Jonathan,请注意,我也是这么说的。但您不知道代码的其余部分看起来如何。可能有些东西只得到一个指针并从那里开始读取,也许将其重构为数组+偏移量是不可行的。从OP的微小代码片段很难说。我走这条路是因为它与我已经写过的代码相似。@北海道:如果你像这样声明一个新的字节数组,然后复制数据,这远不如我给出的答案有效。没有理由分配内存或复制数组。@Jonathan,请注意,我也是这么说的。但您不知道代码的其余部分看起来如何。可能有些东西只得到一个指针并从那里开始读取,也许将其重构为数组+偏移量是不可行的。从OP的微小代码片段很难判断。