我正在寻找一种简单的方法将二进制字符串从小端转换为大端表示。 我正在使用bitset并找到了翻转\ reset \设置位的方法,但我正在寻找一种方法来简单地颠倒它们的顺序。 我试过几个帖子但没有成功。 请问有人可以提供帮助吗?
for (unsigned long i = 0; i < match.size(); ++i) {
std::bitset<16> b(i);
std::bitset<16> b_reversed = ~b;
std::cout << i << '\t';
std::cout << b << '\t';
std::cout << b_reversed << '\t';
std::cout << b_reversed.to_ulong() << '\n';
}
答案 0 :(得分:0)
template<size_t n>
std::bitset<n> reverse(std::bitset<n> &set)
{
std::bitset<n> result;
for (size_t i = 0; i < n; i++)
result[i] = set[n - i - 1];
return result;
}
std::bitset<16> reverse16(std::bitset<16> &set)
{
unsigned short n = static_cast<unsigned short>(set.to_ulong());
return std::bitset<16>((n >> 8) | (n << 8));
}
for (unsigned long i = 5234; i < 5238; ++i)
{
std::bitset<16> a(i);
std::bitset<16> b = reverse16(a);
std::bitset<16> c = reverse(a);
std::cout << a << '\t';
std::cout << b << '\t';
std::cout << c << '\n';
std::cout << std::hex << a.to_ulong() << '\t';
std::cout << std::hex << b.to_ulong() << '\t';
std::cout << std::hex << c.to_ulong() << '\n';
}
您可以像反向那样完全反转bitset顺序,也可以根据reverse16执行的操作来反转它的字节数。
复制粘贴,观察他们的输出,让我知道你想要哪一个..