Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何转换C++;将sscanf_s()函数转换为C#_C#_C++ - Fatal编程技术网

如何转换C++;将sscanf_s()函数转换为C#

如何转换C++;将sscanf_s()函数转换为C#,c#,c++,C#,C++,我想把C++代码转换成C语言,但我不理解这个例子中的 sChanfIs函数,或者它的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(s

我想把C++代码转换成C语言,但我不理解这个例子中的<代码> sChanfIs函数,或者它的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;             
}
inti、Len、iHex;
UCHAR Buf[20];
CString-sHex;
CString Key=“abc”;
Len=Key.GetLength()>>1;
对于(i=0;i
如果我从Martin Bonner的解释中正确理解了
sscanf_s
的功能,那么您正在寻找如何将表示十六进制数字的字符串转换为
int
。您可以通过以下方式执行此操作:

iHex = Convert.ToInt32(sHex, 16);

这就是说,您是否希望实际使用
int
作为转换结果取决于您如何实现该函数的其余部分。(并非所有的
int
s在不同的语言中都是相同的。)

因此不是代码转换服务。请自己尝试,如果遇到特定问题,我们可以提供帮助。很抱歉,我不了解sscanf_s()函数……sscanf接受一个文本字符串(sHex),并根据格式规范(在本例中为%x,意思是“输入为十六进制字符”)将其转换为一个或多个值(在本例中为iHex)。它正在将sHex中的两个十六进制字符转换为iHex中的一个字节。此外,请不要将单个DES用于任何类型的加密,并注意C#提供了对CNG加密的相对直接的访问,这将是正确的。请注意,循环需要成对的字符,DES密钥是64位奇偶校验(8字节=16个字符),56位无奇偶校验(7个字节,8个字符)。三重DES的长度是三倍(如果您实际执行的是2DES,则可能是两倍)。即使使用3DES,也更喜欢AES-有一些针对3DES的半实际攻击,因为块大小太小。您能告诉我下面这行的意思吗..Buf[i]=~iHex;@Divyesh这意味着您正在获取
iHex
的值,并将其分配给索引
i
处的
Buf
数组。好的……明白了……谢谢您,我会使用
ToByte
,但是是的。@MartinBonner我同意。我只使用了
到了32
,因为OP试图翻译的函数说
iHex
int类型的
,因此一对一转换也需要在C#中使用
int
。但是,我同意
int
不一定是此应用程序的最佳选择,因此我在回答中提出了警告。