在 C++ 中将字符或字符串转换为位集
Posted
技术标签:
【中文标题】在 C++ 中将字符或字符串转换为位集【英文标题】:Convert char or string to bitset in c++ 【发布时间】:2014-04-17 19:59:14 【问题描述】:我正在做一项关于 DES 加密的作业,但我似乎无法将字符串转换,更不用说将字符转换为位集了。谁能告诉我如何在 C++ 中将单个字符转换为位集?
【问题讨论】:
std::bitset
接受用于构造的字符串。你考虑过使用它吗?
评论应该被接受。
【参考方案1】:
以下内容:
char c = 'A';
std::bitset<8> b(c); // implicit cast to unsigned long long
应该可以。
见http://ideone.com/PtSFvz
如果可能的话,将任意长度的 string
转换为 bitset
会更难。 bitset 的大小必须在编译时知道,因此实际上没有办法将字符串转换为一个。
但是,如果您在编译时知道字符串的长度(或者可以在编译时绑定它),您可以执行以下操作:
const size_t N = 50; // bound on string length
bitset<N * 8> b;
for (int i = 0; i < str.length(); ++i)
char c = s[i];
for (int j = 7; j >= 0 && c; --j)
if (c & 0x1)
b.set(8 * i + j);
c >>= 1;
这可能效率有点低,但我不知道是否有更好的解决方法。
【讨论】:
以上是关于在 C++ 中将字符或字符串转换为位集的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Amazon Redshift 中将整数转换为位字符串?
如何在 PostgreSQL 中将长 NUMERIC 整数转换为位字符串?