2013-05-21 149 views
-3

如何將以下內容轉換爲VB?這是什麼意思?如何將c代碼轉換爲vb.net?

unsigned char *s = (unsigned char *)(void *)serialNum; 
+0

喜歡的東西 '昏暗參考譯文字符串 昏暗SERIALNUM作爲字符串 SERIALNUM:= 「123A456Z」 S:= serialNum' 分享和享受。 –

+0

'serialNum'的類型是什麼? – interjay

+0

這裏是代碼的函數名稱,我很久以後init_Function21(char * serialNum,int sequence,char * table) – Jag

回答

0

從我對VB的瞭解不多,我不確定是否有翻譯。

它看起來像代碼的意圖是把一個整數值(serialNum),並用它作爲一個字節(s)序列的地址

unsigned char *s聲明s是指向unsigned char的指針;存儲在s中的值是單個字節或序列的第一個字節的地址

(unsigned char *) and (void *) are cast cast;它們用於將表達式的類型轉換爲不同的類型。 C的類型規則是這樣的,你不能直接給一個指針變量賦一個整數值;必須使用強制轉換操作將整數值轉換爲指針類型。 (void *) serialNum將表達式serialNum的類型從int(或其他)轉換爲void *,這是C的「通用」指針的概念。 (unsigned char *)將前一個表達式的結果轉換爲指向unsigned char的指針。

(void *)轉換操作是多餘的IMO了,下面應該工作一樣好:

unsigned char *s = (unsigned char *) serialNum; 

再說一遍,我不知道在VB適當的翻譯將是什麼。

+0

以下行簡單解決了我的問題:Dim s As String = serialNum。對於指針位置,我使用數組來保存整個字符串並循環遍歷。很明顯,業務邏輯使用按位運算符來加密serialnumber(由於客戶安全策略,可以共享業務邏輯)。希望這對所有的讀者都有所幫助。 – Jag

+0

我將上面的代碼行改爲Dim s As String = serialNum。並解決了這個問題。謝謝你們... – Jag

0

這是相當難從上下文判斷。據推測serialNum是一個未鍵入(C中的void *)指針。

指針值被複制到s中,其類型爲「指向無符號字符的指針」。

該代碼看起來好像有人在serialNum中構建了一個字符串,但指針是以非鍵入的方式共享的,因此接收方需要知道它應該被視爲unsigned char *