欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-01 18:09:50
...

// (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;

}

相关标签: Qt Excel