我有一个变量,它的类型是bitset < 16>。我想获得我的变量的第一个8位,并将其放入char变量。我知道如何将bitset转换为char,但我不知道如何选择第一个8位并将其转换为char。如何在C++中从位集<16>中选择第一个8位?
3
A
回答
4
如果 “前8位” 你在谈论8 MSB,可以考虑使用>>操作符:
#include <iostream>
int main() {
std::bitset<16> myBits(0b0110110001111101);
char reg = 0;
reg = static_cast<char>(myBits.to_ulong() >> 8);
}
+1
感谢Benjamin.it工作完美。 –
1
从doc of the std::bitset constructor:
如果val的值表示大于位集大小,只考虑val的最低有效位。
那么另一种解决方案可能是:
#include <iostream>
int main() {
std::bitset<16> myBits16(0b0110110001111101);
std::bitset<8> myBits8(myBits16.to_ulong());
char reg = static_cast<char>(myBits8.to_ulong());
}
相关问题
- 1. Z3:如何从8位数组中选择4个字节?
- 2. 如何仅在视图中选择字段前8个位置
- 3. 收集选择在第一个位置返回空值
- 4. 在子集中选择第一个
- 5. 从一个集合中快速选择位
- 6. 选择哪个结果在MySQL结果集中排在第一位
- 7. 如何使用Linq从C#中的vb.net中选择位置?
- 8. 从MapView中选择位置
- 9. 如何在C#中清除一个位?
- 10. 如何从C#/ .NET中的另一个位图中减去一个位图?
- 11. 从两个表中选择位置
- 12. 如何在C中实现位集合
- 13. 从R中的4位或6位数中选择两位数
- 14. MySQL的选择仅基于在字符串中的第一个值的位置占位符选择/过滤器
- 15. 如何从两个类中选择一个条件在C++中?
- 16. 吴选择Ng选择从第一个选择框中选择下一个值
- 17. 在excel中选择一个列,但从所需的位置
- 18. 如何添加一个选择到ZF2中的哪个位置? !
- 19. 选择下一个位置
- 20. 如何在VB.NET中将16位值分成两个8位值?
- 21. double如何在C++中以8个字节存储1024位?
- 22. IPC键选择从st_dev 8位和st_ino中
- 23. 如何找到C中第一个不同的位?
- 24. 选择:中位数
- 25. jQuery:如何在第一个选择中基于类选择另一个选项
- 26. 如何根据位的位置随机选择一个值
- 27. 在第三个DataGridView中选择时,如何在2个DataGridView中选择一行?
- 28. 选择<a>标记其中<input>位于jQuery中
- 29. 第一个CPU是8位还是4位?
- 30. 从div中选择第一个img
你想文本表示(' “01001101”'),或在单'char'可变的二进制表示? –
'std :: bitset'实现通常的二元运算符'>>','&'等,所以你可以使用它们来提取你想要的位。 –
试试'static_cast(mybitset.to_ulong()&0xff)'。 –