一部のコードを C++ から C# に変換している最中に、これを見つけました。
unsigned char *p = m_pRecvBuffer + 5;
unsigned int noncelen1 = *p * 256 + p[1];
これを C# に変換するにはどうすればよいですか? m_pRecvBuffer文字配列ですが、バイト配列として保存します。
一部のコードを C++ から C# に変換している最中に、これを見つけました。
unsigned char *p = m_pRecvBuffer + 5;
unsigned int noncelen1 = *p * 256 + p[1];
これを C# に変換するにはどうすればよいですか? m_pRecvBuffer文字配列ですが、バイト配列として保存します。
うーん、このコードの一部をリファクタリングする必要があるのだろうか。はい、C# でポインターを使用できます。ただし、そのスニペットに基づいて、より良いオプションがある場合があります。着信ストリームの一部を読み取ろうとしているようです。C# のストリーム ライブラリは、コードのこの部分に適しているのではないでしょうか?
コードが実際に行うことを分析し、コードではなく動作を変換します。C# でメソッドとポインター演算を使用することもできますがunsafe、これはおそらく解決するよりも多くの問題を引き起こすでしょう。
似たようなもの
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];