为什么只能输入pt数组的值,但是不能输入key数组的值,运行出来的结果也不对
```c++
#include<stdio.h>
#include<stdint.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int main()
{
uint8_t key[16] = { 0 };//
uint8_t pt[16] = { 0 }; // 0x32, 0x43, 0xf6, 0xa8, 0x88, 0x5a, 0x30, 0x8d, 0x31, 0x31, 0x98, 0xa2, 0xe0, 0x37, 0x07, 0x34
uint8_t ct[16] = { 0 }; // 保存加密后的数据
uint8_t plain[16] = { 0 }; // 保存解密后的数据
cout<<"请输入要加密的明文(16进制 16个8b):"<<"";
for (int i = 0; i < 16; i++)
{
cin >> hex >> pt[i];
}
cout << "明文为:" << " ";
for (int i = 0; i < 16; i++)
{
cout << hex << int(pt[i]) << ' ';
}
cout<<endl;
cout << "请输入密钥(16进制 16个8b):" <<"";
for (int i = 0; i < 16; i++)
{
cin >>hex>>key[i];
}
cout << "密钥为:" << " ";
for (int i = 0; i < 16; i++)
{
cout << hex << int(key[i]) << ' ';
}
cout << endl;
}
程序中cin的输入这里是有问题的,给你修改为scanf了,具体代码如下,看能否满足你的需求:
#include<stdio.h>
#include<stdint.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int main()
{
uint8_t key[16] = { 0 };//
uint8_t pt[16] = { 0 }; // 0x32, 0x43, 0xf6, 0xa8, 0x88, 0x5a, 0x30, 0x8d, 0x31, 0x31, 0x98, 0xa2, 0xe0, 0x37, 0x07, 0x34
uint8_t ct[16] = { 0 }; // 保存加密后的数据
uint8_t plain[16] = { 0 }; // 保存解密后的数据
cout<<"请输入要加密的明文(16进制 16个8b):"<<"";
cout<<endl;
int i;
for (i = 0; i < 16; i++)
{
//cin >> hex >> pt[i];
scanf("%02x", &pt[i]);
}
cout << "明文为:" << " ";
for (i = 0; i < 16; i++)
{
cout << hex << int(pt[i]) << ' ';
}
cout<<endl;
cout << "请输入密钥(16进制 16个8b):" <<"";
cout<<endl;
for (i = 0; i < 16; i++)
{
//cin >> hex >>key[i];
scanf("%02x", &key[i]);
}
cout << "密钥为:" << " ";
for (int i = 0; i < 16; i++)
{
cout << hex << int(key[i]) << ' ';
}
cout << endl;
}
你都没用到ct 怎么输入
你怎么输入的,截图看看
输入有问题,专门跑了一下代码,这样输入会发现每次都只能读取一个数据即为“0”,“x”,“3”...这样,所以说会发现输入缓存区中仍有大量数据
你可以每次输入之后立即按enter,这样就不会错