C++ 将二进制字符串从小端转换为大端(颠倒位)
c++ converting a binary string from little to big endian (reverse the bits)
我正在寻找一种将二进制字符串从小端表示转换为大端表示的简单方法。我正在使用位集并找到了翻转\重置\设置位的方法,但我正在寻找一种简单地颠倒其顺序的方法。我尝试了几个帖子,但没有成功。请问有人可以帮忙吗?
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';
}
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';
}
您可以完全像反向一样反转位集顺序,也可以反转 reverse16 所基于的字节。
复制粘贴,观察他们的输出,让我知道你想要哪一个..
相关文章:
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- C++从二进制转换为十进制数
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 如何在 O(n) 中将二进制和转换为二进制
- 我写的 ASCII 到二进制转换器C++向后显示二进制,如何使其正确显示?
- 十进制到二进制转换器 c++
- 在C++中将结构转换和存储为二进制
- 从二进制流中读取时,将双精度变量的地址转换为 char* 意味着什么?
- 如何在C ++中将二进制字符串128位转换为十进制字符串?
- 如何将二进制文件头示例代码 (C++/C#) 转换为 Python?
- 二进制 '==':未找到采用 'Enemy' 类型左侧操作数的运算符(或者没有可接受的转换)
- 将二进制转换为十进制,我如何要求用户仅输入二进制
- QTextStream的操作数到二进制的转换无效
- 在c++中读取和转换二进制数据
- c++转换二进制到十进制从字符串输入
- 计算器转换二进制到浮点值-我做错了什么