在C#中處理以下情況的最佳方式是什麼?C#Array.Value與C++中創建的數組有所不同
我有用C/C++編寫的服務器應用程序。
例如 它創建一個長度爲256
的unsigned char
緩衝區。 在此緩衝區中,服務器存儲客戶端發送給它的數據。存儲之後,接收緩衝區會進行一些加密檢查。
我正在用C#編寫這個服務器的客戶端。
的問題是,服務器在256
固定長度期待緩衝器當我創建byte[]
陣列內容和所述加密檢查失敗的256總長度。
我發現的原因很簡單。服務器預計長度爲256個字節的緩衝區。例如,如果消息是"Hello World"
,則緩衝區的其餘部分必須爲0填充。 或者,更好地解釋:字節需要是(unsigned) "204"
或(signed) "-52"
。
我認爲這是一個C/C++的概念問題/問題。
爲了解決我的問題,我正在明確設置該值。
public static byte[] GetCBuffer(this byte[] data, int len)
{
byte[] tmp = new byte[len];
for(int i = 0; i < len; i++)
if(i < data.Length)
tmp[i] = data[i];
else
tmp[i] = 204;
return tmp;
}
是否有更好的方法來處理這些藝術期望的字節?我沒有看到一些重要的東西嗎?
基於此[答案](http://stackoverflow.com/a/6150310/2145211)將_初始化一個字節數組到一個特定的值,而不是默認的空值?_我會說你的解決方案是一個很好的。 – Harrison
我會進一步推廣並傳入「空白」值,因此如果值不是204,那麼您可以再次重複使用。 –