gpt4 book ai didi

c++ - 从 ascii 到位但不是相反

转载 作者:行者123 更新时间:2023-11-28 04:26:28 24 4
gpt4 key购买 nike

我陷入了这个问题。

我正在编写一个 C++ 程序,其中:

1- 你写了一个 6 个字符的字符串

2- 该字符串被转换为位(我们称之为“A”)

3- 这串位被复制到另一个字符串中并通过 reverse() 方法还原(我们称之为“B”)

4- 在 A 和 B 之间执行按位或(我们称此结果为“C”)

5-(这里是我被卡住的地方)C 应该被转换成 ASCII ....但事实并非如此。我得到输出奇怪的符号/问号。

代码如下:

#include <iostream>
#include <bitset>
#include <sstream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{

// PART ONE: from string to bits
string input;
cout << "Insert the 6 letters string you want to convert: \n";
do
{
getline(cin, input);
if (input.length() < 6 || input.length() > 6)
{
cout << "\nIt must be 6 letters!\n";
}
} while (input.length() != 6);

string inbits;
bitset<8> newbits;
for (size_t i = 0; i < input.size(); ++i)
{
newbits = bitset<8>(input.c_str()[i]);
string aux = newbits.to_string<char, std::string::traits_type, std::string::allocator_type>();
inbits.append(aux);
}
cout << endl << inbits << endl;

// PART TWO: bitwise or
string inverted = inbits;
reverse(inverted.begin(), inverted.end());
bitset<48> bstr1(inbits), bstr2(inverted), finale;
finale = bstr1 | bstr2; // here it is done the bitwise OR
cout << finale << endl;
string ored = finale.to_string<char, std::string::traits_type, std::string::allocator_type>();

// PART THREE: from bits to string of char
stringstream sstream(ored);
string aux = "";
while (sstream.good())
{
bitset<8> bits;
sstream >> bits;
char c = char(bits.to_ulong());
aux += c;
}
cout << "the ored string is: " << aux << endl;
}

我不知道出了什么问题。我的意思是,它可能是一种“”“溢出”””但是它只是没有任何意义。我应该如何进行?

(对不起,我的英语不好,这是我第一次在这里开帖,我有点不确定如何移动到这里)

最佳答案

如果您的结果不在 0x41 到 0x5A 范围内,您将不会得到按字母顺序排列的结果: Link to the ascii table site

关于c++ - 从 ascii 到位但不是相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54208300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com