c++ - 我用 C++ 编写的 ascii 到二进制转换器显示二进制向后,我怎样才能让它正确显示?
问题描述
好的,所以我用 C++ 编写了一个 ascii 到二进制转换器,一切都很好,唯一的问题是它向后显示二进制文件,我不知道如何正确显示它。
#include <iostream>
#include <string>
using namespace std;
int main() {
string word;
getline(cin, word);
for (int i = 0; word[i] != '\0'; i++) {
int v = int(word[i]);
while (v != 1 || 0) {
int m = v % 2;
cout << " " << m << " ";
v = v / 2;
}
cout << " " << v;
}
return 0;
}
这就是我的意思。当我运行代码时,它要求您输入 ascii,所以我输入:
f
这是十进制的 102,因此它应该显示:
1100110
相反,我得到:
0110011
我该怎么办?
解决方案
在下面的代码中,位掩码用于隔离位。然后打印位的文本形式。然后位掩码在适当的方向上旋转。
const size_t length = word.length();
for (size_t i = 0; i < length; ++i)
{
char bit_mask = 0x80;
const char value(word[i]);
for (size_t bit_count = 0; bit_count < 8; ++bit_count)
{
char bit_value = value & bit_mask;
if (bit_value)
{
std::cout << '1';
}
else
{
std::cout << '0';
}
bit_mask >>= 1;
}
std::cout << ' ';
}
上面的代码以最高有效位格式打印位。要更改位顺序,请更改 的初始值并向左 bit_mask
旋转。bit_mask
推荐阅读
- excel - 以只读访问权限写入数据库 [TSQL 存储过程]
- http - HTTP 的登录方法
- javascript - How do I get these two elements to align side by side?
- r - 如何在 Mac OS X 10.14 中安装 Rsymphony
- php - 向通过 php/html 脚本生成的按钮添加功能
- go - 为任何客户端创建 HTTPS 测试服务器
- python - Python 2.7 VSCODE 没有得到正确长度的输入字符串
- openoffice-calc - 合并openoffice中的单元格删除特定的空格
- flutter - 如何找到 InputDecoration 的 contentPadding?
- python - python中的哨兵循环