簡體   English   中英

C#中的無符號字符指針?

[英]unsigned char pointer in C#?

在將某些代碼從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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM