C++ 解析已知大小的无符号int

C++ 解析已知大小的无符号int,c++,parsing,C++,Parsing,我正在解析字符串,我希望解析6位数字的数字。我还知道这个数字有6位数字,所以它将适合unsiged int 用什么方法解析它更好? 使用atoi然后强制转换为无符号整数,或者使用strtoul(返回无符号长整数)然后强制转换为无符号整数 还有其他我没想到的方法吗? 谢谢 嗯,最简单的版本是C++。 但如果您想直接执行此操作,并且这确实是时间关键的,您也可以显式执行此操作,因为您知道位数: unsigned int i = static_cast<unsigned int>(str

我正在解析字符串,我希望解析6位数字的数字。我还知道这个数字有6位数字,所以它将适合unsiged int

用什么方法解析它更好? 使用atoi然后强制转换为无符号整数,或者使用strtoul(返回无符号长整数)然后强制转换为无符号整数

还有其他我没想到的方法吗?
谢谢

嗯,最简单的版本是C++。 但如果您想直接执行此操作,并且这确实是时间关键的,您也可以显式执行此操作,因为您知道位数:

unsigned int i =
  static_cast<unsigned int>(str[5]-'0') * 1ul
+ static_cast<unsigned int>(str[4]-'0') * 10ul
+ static_cast<unsigned int>(str[3]-'0') * 100ul
+ static_cast<unsigned int>(str[2]-'0') * 1000ul
+ static_cast<unsigned int>(str[1]-'0') * 10000ul
+ static_cast<unsigned int>(str[0]-'0') * 100000ul;
无符号整数i=
静态_-cast(str[5]-'0')*1ul
+静态(str[4]-'0')*10ul
+静态(str[3]-'0')*100ul
+静态(str[2]-'0')*1000ul
+静态(str[1]-'0')*10000ul
+静态浇铸(str[0]-'0')*10000UL;

但我强烈建议您使用
stoul

如果您知道字符串的外观,只需使用
sscanf

sscanf(yourStringBuffer, "%ud", &unsingedIntVariable);

另一种可能性:
sscanf(str、%u、&var)
您不能对所有内容都使用位掩码,位掩码
|
在这里不起作用——你必须使用
+
@TonyK:你完全正确!非常感谢。不知道我在想什么!
sscanf(yourStringBuffer, "%ud", &unsingedIntVariable);