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 eclipse无法正常运行
    • ¥15 定义了函数,但是无法根据函数定义触发器
    • ¥20 5变量卡诺图化简得出与非门电路图
    • ¥15 Python爬取交通拥堵指数数据
    • ¥15 使用vba抓取重定向网页问题
    • ¥20 付费需求测试程序(细谈)。
    • ¥15 为什么这段c++代码会报这么多语法错误?
    • ¥50 vue-codemirror如何对指定行 指定位置的 字符进行背景颜色或者字体颜色的修改?
    • ¥30 遇到一个的问题,请教各位
    • ¥20 matlab报错,vflux计算潜流通量