Qt操作excel时,10进制和26进制的相互转换

// (1) 用自然数n除以26,得到余数m。若m=0,令m=26。
// (2) 将m映射到26个字母上(1==‘A’,…,26==‘z’),前置拼接字符串。
// (3) 用自然数n减去m,得到新的n,重复(1)-(3)至n=0。

  QString intToStringBy26Base(int column)
  {
    QString colName;
    while (column > 0)
    {
        int a = column%26;
        if (a == 0)
            a = 26;
        column = (column - a)/26;
        colName.prepend(QChar(a + 64));
    }
    return colName;
}

// (1) 对于有n个字母组成的字符串,顺序取出(此处由右至至)字符串str每一位的字母x
// (2) 将字母x映射到对应的数字a,乘以对应的基幂数,如右起第一位为26的零
// 次幂,第二位为26的一次幂,依此类推。得到每一位实际对应的数m。
// (3) 将m依次累加,得到最终的十进制数。

int stringToIntBy26Base(QString colName)
{
    int column = 0;
    int strLen = colName.length();
    for (int i=0,j=1; i<strLen; i++,j*=26)
    {
        int temp = (int)(colName.toUpper().at(strLen - 1 - i).toLatin1() - 64);
        column = column + temp * j;
    }
    return column;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值