在從C++翻譯一些代碼,C#的中間,我發現了這一點,C#中的無符號字符指針?
unsigned char *p = m_pRecvBuffer + 5;
unsigned int noncelen1 = *p * 256 + p[1];
如何翻譯成C#嗎? m_pRecvBuffer
是一個字符數組,但我把它存儲爲一個字節數組。
在從C++翻譯一些代碼,C#的中間,我發現了這一點,C#中的無符號字符指針?
unsigned char *p = m_pRecvBuffer + 5;
unsigned int noncelen1 = *p * 256 + p[1];
如何翻譯成C#嗎? m_pRecvBuffer
是一個字符數組,但我把它存儲爲一個字節數組。
一種近乎
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];
應該是夠了,我猜。
嗯我不知道是否一些重構將爲了這段代碼。是的,你可以使用pointers in C#。但是,基於該片段,可能會有更好的選擇。它看起來像你正在嘗試讀取傳入流的部分。也許C#的stream library會更適合你的這段代碼?
您可以分析代碼實際執行的內容並轉換行爲,而不是代碼。雖然可以在c#中使用unsafe
方法和指針算術,但這可能會產生比解決問題更多的問題。
假設RecvBuffer被聲明爲字節[],你會做這樣的事情:
int noncelen1 = RecvBuffer[5] * 256 + RecvBuffer[6];
是的,我知道這一點。然而,由於我比C++知道更多的C#,並且無法調試給出的代碼,所以我想把它放在C#中,然後將它重構爲好東西。 – 2011-01-29 15:19:48
啊好的。對我來說同樣的問題,我的想法是數組索引,但我不能把它放在手指上。 – Femaref 2011-01-29 15:25:24