在 C++ 中将 bitset 转换为 int
Posted
技术标签:
【中文标题】在 C++ 中将 bitset 转换为 int【英文标题】:convert bitset to int in c++ 【发布时间】:2013-11-04 05:03:00 【问题描述】:在 C++ 中。我将 bitset 初始化为 -3,例如:
std::bitset<32> mybit(-3);
有没有一种优雅的方式可以将mybit
转换为-3
。因为 bitset 对象只有 to_ulong
和 to_string
这样的方法。
【问题讨论】:
将其转换为 unsigned long,然后将其转换为 int。 作为the documentation says,std::bitset
具有将值转换为ulong的功能。因此,正如@Barmar 所说,将 long 转换为 int。那你的问题是什么?在发布问题之前,您是否阅读过文档或尝试过任何事情?
@Johnsyweb 他可能想处理负值,如他的示例所示。
将ulong
转换为long
,然后将int
即int(long(mybit.to_ulong()))
【参考方案1】:
使用to_ulong
将其转换为unsigned long
,然后使用普通转换将其转换为int
。
int mybit_int;
mybit_int = (int)(mybit.to_ulong());
DEMO
【讨论】:
因为这是 C++,我建议使用 static_cast<int>(mybit.to_ulong()) 而不是 C 风格的演员表。 不工作,仍然吐出无符号整数。 -3 变成 251 @FluorescentGreen5 我添加了一个演示,表明它可以工作。 @ErkinAlpGüney 我认为他的建议是关于风格的——在 C++ 中,您应该使用模板语法而不是 C 语法进行强制转换,因为它使您的意图更清晰。但我不是一个纯粹主义者,我觉得冗长的语法令人反感。 @ErkinAlpGüney - 我的建议是关于操作的安全性。如果您使用static_cast
,则代码对进来和更改类型的人更具弹性。 ***.com/a/103868/1517648我见过各种情况下 C 风格的演员都可以,直到有人改变了一些东西然后他们就没有了。 static_cast
会出现编译器错误。以上是关于在 C++ 中将 bitset 转换为 int的主要内容,如果未能解决你的问题,请参考以下文章