0

一部のコードを C++ から C# に変換している最中に、これを見つけました。

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

これを C# に変換するにはどうすればよいですか? m_pRecvBuffer文字配列ですが、バイト配列として保存します。

4

4 に答える 4

2

うーん、このコードの一部をリファクタリングする必要があるのだろうか。はい、C# でポインターを使用できます。ただし、そのスニペットに基づいて、より良いオプションがある場合があります。着信ストリームの一部を読み取ろうとしているようです。C# のストリーム ライブラリは、コードのこの部分に適しているのではないでしょうか?

于 2011-01-29T15:10:18.323 に答える
2

コードが実際に行うことを分析し、コードではなく動作を変換します。C# でメソッドとポインター演算を使用することもできますがunsafe、これはおそらく解決するよりも多くの問題を引き起こすでしょう。

于 2011-01-29T15:10:29.900 に答える
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];

で十分だと思います。

于 2011-01-29T15:11:55.550 に答える
0

RecvBuffer が byte[] として宣言されていると仮定すると、次のようになります。

int noncelen1 = RecvBuffer[5] * 256 + RecvBuffer[6];
于 2011-01-29T15:12:06.637 に答える