ccc_0909 2023-06-02 11:04 采纳率: 66.7%
浏览 83
已结题

关于#c++#的问题:为什么只能输入pt数组的值,但是不能输入key数组的值

为什么只能输入pt数组的值,但是不能输入key数组的值,运行出来的结果也不对

img


```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;
  
}


  • 写回答

4条回答 默认 最新

  • 少林and叔叔 2023-06-02 11:49
    关注

    程序中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;
      
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月2日
  • 已采纳回答 6月2日
  • 修改了问题 6月2日
  • 修改了问题 6月2日
  • 展开全部

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥15 this signal is connected to multiple drivers怎么解决
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥60 关机时蓝屏并显示KMODE_EXCEPTION_NOT_HANDLED,怎么修?
  • ¥66 如何制作支付宝扫码跳转到发红包界面