gpt4 book ai didi

c++ - 为什么这个程序不打印出十六进制值?

转载 作者:行者123 更新时间:2023-11-30 04:23:40 25 4
gpt4 key购买 nike

我已经有很长时间没有接触过 C++ 了,而且我的语言也一直不太流利,所以请原谅我的无知。

我编写了以下小程序来处理 XOR 加密:

#include <iostream>
#include <iomanip>
#include "string.h"

using std::cout;
using std::endl;
using std::hex;
using std::string;

string cipher(string msg, char key);

int main(void)
{
string msg = "Now is the winter of our discontent, made glorious summer by this sun of York.";
char key = 's'; // ASCII 115

string ctext = cipher(msg, key);

cout << "Plaintext: " << msg << endl;
cout << "Ciphertext (hex): ";
for (int i = 0; i < ctext.size(); i++)
cout << hex << ctext[i];

return 0;
}

string cipher(string msg, char key)
/*
Symmetric XOR cipher
*/
{
for(int i = 0; i < msg.size(); i++)
msg[i] ^= key;

return msg;
}

此代码输出以下内容:

Plaintext:  Now is the winter of our discontent, made glorious summer by this sun of York.
Ciphertext (hex): =SSSSSS_SSSS
SSSS*]

为什么我不能得到要输出的十六进制值?我做错了什么?

此外,我们也欢迎任何一般性建议。

最佳答案

十六进制适用于整数。无论在流中设置什么基数,char 都会作为字符流式传输。如果要以十六进制打印字符的 ACSII 代码,请使用

 cout << hex << static_cast<int>(ctext[i]);

关于c++ - 为什么这个程序不打印出十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221774/

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