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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?