UnlockOffset
是 DWORD 。 thisKey
是 char [5]
if(EOF == sscanf_s(thisKey, "%d", &UnlockOffset))
如何在c#中完成上述代码?
DWORD
已转换为UInt32
且thiskey
仍为char
数组,但我仍然不理解sscanf_s
。
PS:我确实检查过MSDN,但是我不能很好地理解它,这就是我在这里发布的原因。
答案 0 :(得分:2)
通常,您可以使用UInt32.Parse
(或TryParse
)从string
中提取信息。 char[]
很少用于在C#中存储字符串值,因为string
更合适。
答案 1 :(得分:2)
sscanf_s
基本上读取一个字符串并提取与格式字符串匹配的内容。如果它无法提取匹配所有格式内容的东西,它将返回EOF
。
您可以执行类似
的操作string str = new string(thisKey);
if (!UInt32.TryParse(str, out UnlockOffset))
会完成类似的事情,但可能会或多或少地严格。 UInt32.TryParse
如果可以转换字符串则返回true,如果不能则返回false,因此检查EOF将等同于查看TryParse是否为false。
答案 2 :(得分:0)
如果thisKey为“123 456 739”,那么sscanf_s(thisKey, "%d", &UnlockOffset))
将获得123 UnlockOffset
这是近似的等价物
string str = new string(thisKey);
string[] strAr = str.Split(' ');
UnlockOffset = Convert.ToUInt32(strAr!=null ? strAr[0] : str);
答案 3 :(得分:0)
由于每个人都已经提到uint.Parse
(和uint.TryParse
),您可以将char数组转换为这样的整数:
uint UnlockOffset = 0;
foreach (char digit in thisKey)
{
UnlockOffset *= 10;
UnlockOffset += (uint)(digit - '0');
}