我正在做 DES 加密的作业,但我似乎无法将字符串转换,更不用说将字符转换为位集了。谁能告诉我如何在 C++ 中将单个字符转换为位集?
下列:
char c = 'A';
std::bitset<8> b(c); // implicit cast to unsigned long long
应该管用。
See http://ideone.com/PtSFvz http://ideone.com/PtSFvz
转换任意长度string
to a 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;
}
}
这可能有点低效,但我不知道是否有更好的解决方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)