c++中的Int转换为bool[]
int to bool[] in c++
我想做的是给定一个参数const int &i
,以bool
数组的形式返回i
的二进制表示的位(并且返回也会很棒)…有人知道怎么做吗?
除非您确实需要它是一个bool数组,否则我会使用std::bitset
:
std::bitset bits<32>(i);
你通常可以把它当作一个bool数组,测试、设置和翻转单个位,等等。当然,如果您希望可移植到具有不同int大小的对象上,您可能希望将其修改为:
#define size (sizeof(int) * CHAR_BIT)
std::bitset bits<size>(i);
Edit:正如比我更有经验的人指出的那样,如果数字是负的,这样做可能会导致问题(具体发生什么取决于您的编译器)。在任何情况下,以这种方式处理负数都是没有意义的,除非您还规定了返回值将使用哪种算术表示(1s补码?2 s补充吗?),因此,据我所知,这种方法对于负数实际上是无用的。
对不起,让你的注意力从更有价值的答案上转移了。
原来嗯,我想到了这个:
int i = 42; // or whatever
std::vector<bool> vec;
while(i) {
vec.push_back(i & 1);
i >>= 1;
}
std::reverse(vec);
当然这不是一个数组,但是如果你想把vector的内容复制到数组中也很简单,例如:
bool boolArray[] = new bool[vec.size()];
std::copy(vec.rbegin(), vec.rend(), boolArray);
相关文章:
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 从标准::字符串到标准::矢量<bool>的快速转换
- 从标准::未来<void>到非标量标准::未来<bool>引发的错误转换
- 如果类对象需要在 C++ 中转换为 int,为什么会调用 "operator bool()"?
- 从nullptr_t转换为bool:有效与否
- 为什么这个GitHub项目将字符串转换为bool
- 我无法将'2D array whit bool'转换为"空 2D 数组布尔值"(用于生命游戏)
- 错误:无法将"dirent*"转换为"search_directories(std::string, std::list<start_tournament_info_t*>&, bool)
- 无法将“ bool”转换为“ gzfile {aka gzfile_s*}”
- C++变体用bool转换构造函数
- 为什么显式 bool() 转换在上下文转换中不发生
- 错误 C2440: 'type cast':无法从 'bool' 转换为 'CString'
- 将bool转换为QString
- 将向量<bool>转换为十进制(作为字符串)
- atlbase.h 编译器错误 :- 无法将参数从'bool'转换为'LPWSTR'
- 将矢量<bool>转换为整数
- 将 stl 向量<bool>转换为布尔 * 数组的快速方法
- 将bool转换为位序列
- 将 bool[] 转换为 std::string 的 void*
- 无法将'const bool'转换为 'jobject