2017-01-13 88 views
-6

我想轉換下面的C++代碼到C#,但我不明白,在這個例子中sscanf_s功能做什麼或它的C#等價物是什麼。如何轉換C++ sscanf_s()函數C#

int   i, Len, iHex; 
UCHAR  Buf[20]; 
CString  sHex; 
CString Key = "abc"; 

Len = Key.GetLength() >> 1; 
for(i = 0; i < Len; i++) { 
    sHex = sDesKey.Mid(i * 2, 2); 
    sscanf_s(sHex, _T("%x"), &iHex);  
    Buf[i] = ~iHex;    
} 
+2

SO不是代碼轉換服務。嘗試自己做,如果遇到特定問題,我們可以提供幫助。 – Abion47

+0

我很抱歉,但我我以前不明白約sscanf_s()函數..... – Divyesh

+1

的sscanf需要一個文本字符串(sHex),並將其轉換按照格式規範(在這種情況下爲%x,意爲」輸入十六進制字符「)轉換爲一個或多個值(在本例中爲iHex)。它將sHex中的兩個十六進制字符轉換爲iHex中的一個字節。 –

回答

1

如果我理解正確sscanf_s馬丁邦納的解釋功能,你正在尋找如何表示十六進制數字爲int字符串轉換。你可以用下面這樣做:

iHex = Convert.ToInt32(sHex, 16); 

這是說,你是否希望實際使用int爲您的轉換結果取決於你如何實現該功能的其餘部分。 (並非所有int s的創建跨語言相同。)

+0

非常感謝您...... – Divyesh

+0

你能告訴我什麼是以下行的意思.. BUF [i] =〜iHex; – Divyesh

+0

@Divyesh這意味着你正在服用的[按位反轉] iHex'的'(https://msdn.microsoft.com/en-us/library/46zxf1c0(V = VS.100)的.aspx),並將其分配給位於索引'i'的'Buf'數組。 – Abion47