wlsk888 2023-02-18 10:22 采纳率: 90.9%
浏览 17
已结题

c++ 16机制文本生成问题(标签-windows|关键词-16进制)

windows 10 vs2019 C++
下面代码生成形如“ADBF0000"这样的16机制文本,但我总觉得太过繁琐。那么多变量+语句。
我实际上就是需要随机取一个0-65535的数转16进制,以”0000“结尾,应该一共(4字节?)不知道有其他简单点的?

int  main()
{
    srand((unsigned int)time(NULL));
    unsigned char a[4] = {0};
    a[0]=(unsigned char)rand();
    a[1] = (unsigned char)rand();
    char b[8];
    ByteToHexStr((const unsigned char*)a, b, 4);
    stringstream stream;
    stream << b;
    string bbb = stream.str();
    string str1 = bbb.substr(0, 8);
    std::cout << str1  << std::endl;
}

void ByteToHexStr(const unsigned char* source, char* dest, int sourceLen)
{
    short i;
    unsigned char highByte, lowByte;

    for (i = 0; i < sourceLen; i++)
    {
        highByte = source[i] >> 4;
        lowByte = source[i] & 0x0f;

        highByte += 0x30;

        if (highByte > 0x39)
            dest[i * 2] = highByte + 0x07;
        else
            dest[i * 2] = highByte;

        lowByte += 0x30;
        if (lowByte > 0x39)
            dest[i * 2 + 1] = lowByte + 0x07;
        else
            dest[i * 2 + 1] = lowByte;
    }
    return;
}

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2023-02-18 10:26
    关注

    那你随机产生一个短整形就行了啊

    int  main()
    {
        srand((unsigned int)time(NULL));
        unsigned short a = rand();
        char s[9] = {0};
        sprintf(s,"%02X%02X0000",a>>8,a&0xFF);
        cout<<s<<endl;
    }
     
    
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵