C++ c++;将二进制字符串从低位转换为高位(反转位)
我正在寻找一种简单的方法,将二进制字符串从小端表示转换为大端表示。 我正在使用位集并找到了翻转\重置\设置位的方法,但我正在寻找一种简单地颠倒顺序的方法。 我试过几篇帖子,都没有成功。 有人能帮忙吗C++ c++;将二进制字符串从低位转换为高位(反转位),c++,bitset,endianness,C++,Bitset,Endianness,我正在寻找一种简单的方法,将二进制字符串从小端表示转换为大端表示。 我正在使用位集并找到了翻转\重置\设置位的方法,但我正在寻找一种简单地颠倒顺序的方法。 我试过几篇帖子,都没有成功。 有人能帮忙吗 for (unsigned long i = 0; i < match.size(); ++i) { std::bitset<16> b(i); std::bitset<16> b_reversed = ~b;
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';
}
for(无符号长i=0;i模板
std::位集反转(std::位集和集)
{
std::位集结果;
对于(大小i=0;i return std::bitset((n>>8)|(n Big-endian vs.little-endian是关于字节的顺序,而不是位。0x01 0x02
和0x02 0x01
具有相反的端性。小端性的标准是什么?通常情况下,字节顺序颠倒,但字节内的位保持不变[并且是Big-endian]。
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';
}