2015-02-09 83 views
0

如果我有一個列表需要作爲PARAM像這樣什麼是C#列表<byte>的在C相當於

private bool ReadResponse(HidDevice device, List<byte> response, int length){ 
    //do something 
} 

我需要C#方法使用unsigned char *pointer它重新寫入C.會作爲參數是做到這一點的正確方法?這是我現在擁有的C函數簽名。當調用函數時,我將傳入unsigned char data[64]作爲第一個參數。

bool ReadReport(unsigned char *response, int length){ 
    // do something 
} 

最終用於這個,我需要將所有讀取的字節存儲到一個字符串稍後。

+2

你似乎知道如何做到這一點。這是什麼問題? – user694733 2015-02-09 14:44:37

+0

所以你絕對不能使用C++? – 2015-02-09 14:59:16

+0

它實際上是一個驅動程序被寫入爲Mac。據我所知工作在Objective-C環境中使用C更容易,我也很少使用C++的經驗。 – 2015-02-10 01:37:04

回答

0

事實上,這是事實,正確類型byte是使用unsigned char,或者在你的情況下,unsigned char *response。有一個區別是,在C#中,您可以隨時調整/添加新元素到列表中,但不能在C中執行此操作;如果是這種情況,您可能需要使用realloc。 (或實現類似動態vector)

+0

如果我給它一個設置的大小說unsigned char buffer [800],我可以通過使用memcpy添加到這個雖然正確? – 2015-02-09 15:17:26

+0

@Stavros_S:我不知道你的意思,如果你分配這樣的數組,你不能改變它的大小了。 memcpy用於複製。 – 2015-02-09 17:32:34

1

如果你有函數的

bool ReadReport(unsigned char *response, int length) 

簽名,你需要調用它像

ReadReport(data, len); 
      ^
      | //it expects unsigned char *, not unsigned char 
+0

是的,這是如何,我通過它。 – 2015-02-09 15:08:47

+1

@Stavros_S那麼,這是什麼問題? – 2015-02-09 15:09:59