【发布时间】:2018-10-10 22:01:49
【问题描述】:
假设我有一组要转换为 int 的位,但这些位可能表示负 2 的补数,例如:
vector<bool> foo = { true, false, false, false, false, true, false, false }
显然,如果设置了foo.front(),则该数字为负数。将其转换为 int 的最佳方法是什么?
这个问题似乎不够清晰。作为参考,我在这里添加了我的蛮力解决方案:https://stackoverflow.com/a/50108264/2642059 我想完成同样的事情,但理想情况下是提供一些功能,而不是太多黑客。
【问题讨论】:
-
你必须使用
vector<bool>吗?std::bitset应该为你处理这个问题。 -
你可以得到
unsigned int的值然后:int signed_val = *((int *)&your_unsigned_int); -
@NathanOliver 我不能使用
bitset,因为我不知道在设计时我会有多少位,只是会少于 32 个。 -
那么如果只提供 12 位,那么第 12 位将是符号位?
-
@NathanOliver 正确,如果
foo.front()设置为负数。
标签: c++ binary integer twos-complement negative-number