C++整型转16进制字符串或16进制字符串转整型-创新互联

前言:整数转16进制字符串,网上大部分的资料都是要传入16进制字符串的位数,有点麻烦。本文介绍的方法自动确定返回的字符串的位数,位数为最小偶数。偶数位方便使用时转成字节数组(unsigned char[]),这样就可以传输了。

创新互联提供成都网站设计、成都网站建设、网页设计,品牌网站制作广告投放等致力于企业网站建设与公司网站制作,十多年的网站开发和建站经验,助力企业信息化建设,成功案例突破上千,是您实现网站建设的好选择.

一、16进制字符串转整型 

int hexStrToInt(string hexStr)
{
    return stoi(hexStr, 0, 16);
}

二、整型转16进制字符串

string intToHexStr(int mask) {
    // 最终16进制字符串长度为偶数
    int hexLen = 0;
    if (mask >INT_MAX) {
        return "00";
    }

    // 根据数值的大小决定16进制字符串的个数
    for (int i = 2; i<= 6; i += 2) {
        string hex = "";
        for (int j = 0; j< i; j++) {
            hex += "F";
        }
        if (mask<= hexStrToInt(hex)) {
            hexLen = i;
            break;
        }
    }

    // 最长8位, INT_MAX = 2147483647, 16进制字符串为:7FFFFFFF
    if (hexLen == 0) {
        hexLen = 8;
    }

    //16进制字符集
    string hexes[16] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
    string hexstring = "";
    for (int i = 0; i< hexLen; i++){
        int j = hexLen - i - 1;
        // 按顺序取4bit数
        int number = (mask >>4 * j) & 0xf;
        hexstring += hexes[number];
    }
    return hexstring;
}

整型转16进制字符串有参考这篇文章:2021.9.9 解决c++整数转化为16进制字符串问题_MoonByulStar的博客-博客_c++整型转16进制 

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前文章:C++整型转16进制字符串或16进制字符串转整型-创新互联
新闻来源:http://scyanting.com/article/djdoop.html