Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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++_Scanf - Fatal编程技术网

C#中sscanf#s的等价物?

C#中sscanf#s的等价物?,c#,c++,scanf,C#,C++,Scanf,解锁偏移量为DWORDthisKey是一个字符[5] 上述代码将如何在c#中完成 DWORD被转换为UInt32,这个键仍然是char数组,但我仍然不理解sscanf\s PS:我确实查看了MSDN,但不能很好地理解它,这就是我将其发布在此处的原因。通常,您会使用(或TryParse)从字符串中提取信息。很少使用char[]在C#中存储字符串值,因为string更合适。sscanf\u s基本上读取字符串并提取与格式字符串匹配的内容。如果无法提取内容以匹配所有格式内容,它将返回EOF 你可以这样

解锁偏移量
为DWORD
thisKey
是一个字符[5]

上述代码将如何在c#中完成

DWORD
被转换为
UInt32
这个键仍然是
char
数组,但我仍然不理解
sscanf\s


PS:我确实查看了MSDN,但不能很好地理解它,这就是我将其发布在此处的原因。

通常,您会使用(或
TryParse
)从
字符串中提取信息。很少使用
char[]
在C#中存储字符串值,因为
string
更合适。

sscanf\u s
基本上读取字符串并提取与格式字符串匹配的内容。如果无法提取内容以匹配所有格式内容,它将返回
EOF

你可以这样做

string str = new string(thisKey);
if (!UInt32.TryParse(str, out UnlockOffset))
这将完成类似的事情,但它可能或多或少是严格的
UInt32.TryParse
如果可以转换字符串则返回true,如果不能转换则返回false,因此检查EOF将等同于查看TryParse是否为false。

如果此键为“123 456 739”,则
sscanf_s(此键,%d',&UnlockOffset))
将123放入
UnlockOffset
这是一个近似等价物

string str = new string(thisKey);
string[] strAr = str.Split(' ');
UnlockOffset = Convert.ToUInt32(strAr!=null ? strAr[0] : str);

由于每个人都提到了
uint.Parse
(和
uint.TryParse
),您可以将字符数组转换为如下所示的整数:

uint UnlockOffset = 0;
foreach (char digit in thisKey)
{
    UnlockOffset *= 10;
    UnlockOffset += (uint)(digit - '0');
}

起初我把它作为一个字符,因为我试图转换代码,因为我不知道如何转换sscanf,直到现在我才懒得把它改成字符串。谢谢,我还想知道EOF是从哪里来的;)假设数组中没有任何垃圾,比如前导空格或尾随空格。@在某些情况下,数组中有一个
-
。@Prix:也有。当你一个字符接一个字符的时候会引起问题。(但作为参考,
UInt32
是无符号的——这意味着如果你想解析一个负数,你可能无论如何也得不到你期望的值…)我在C中实现了
sscanf()
#
uint UnlockOffset = 0;
foreach (char digit in thisKey)
{
    UnlockOffset *= 10;
    UnlockOffset += (uint)(digit - '0');
}