26进制(字母)转十进制算法

下面是一个26进制转十进制的算法,目的是将字母(A~Z)转化为十进制的数字。主要用途是为了解决使用phpExcel解析Excel表格的时候,在Excel表格中列是由字母表示的,而很多情况下我们需要了解到当前的列是哪一行,也就是列的行数。所以才有了此算法。

function litterToNumber($lineTag)
{
    $transfArray =  array(‘A‘=>1,‘B‘=>2,‘C‘=>3, ‘D‘=>4, ‘E‘=>5,    ‘F‘=>6, ‘G‘=>7, ‘H‘=>8, ‘I‘=>9, ‘G‘=>10, ‘K‘=>11, ‘L‘=>12,‘
M‘=>13, ‘N‘=>14, ‘O‘=>15, ‘P‘=>16, ‘Q‘=>17, ‘R‘=>18, ‘S‘=>19, ‘T‘=>20, ‘U‘=>21,‘V‘=>22,‘W‘=>23,‘X‘=>24,‘Y‘=>25,‘Z‘=>26);

    $len = strlen($lineTag);
    for($i = $len-1; $i >= 0; $i --)
    {
        $value += $transfArray[$temp[$i]]*pow(26,$len-1-$i);
    }
}
时间: 2024-12-16 08:01:39

26进制(字母)转十进制算法的相关文章

HDU 2100 Lovekey(26进制相加 数学啊)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2100 Problem Description XYZ-26进制数是一个每位都是大写字母的数字. A.B.C.-.X.Y.Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26进制数转化成是10进制的规则如下 A0A1A2A3-An-1 的每一位代表的数字为a0a1a2a3-an-1 ,则该XYZ-26进制数的10进制值就为 m = a0 * 26^(n-1) + a1 * 26^(n-2) +

HDU 2100 Lovekey 模拟26进制

Problem Description XYZ-26进制数是一个每位都是大写字母的数字. A.B.C.-.X.Y.Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26进制数转化成是10进制的规则如下 A0A1A2A3-An-1 的每一位代表的数字为a0a1a2a3-an-1 ,则该XYZ-26进制数的10进制值就为 m = a0 * 26^(n-1) + a1 * 26^(n-2) + - + an-3* 26^2 + an-2*26 + an-1 一天vivi忽然玩起了浪漫,要躲在学校

用栈实现2进制数到十进制数的转换

问题:用栈实现2进制数到十进制数的转换 解析:用到<math.h>库中的pow函数,pow(2,i)表示2^i.当进行形参到实参的传送时,需要改变栈中的元素时传入&s,当不改变栈中元素,只对栈s进行操作时,传入s 代码实现: /*利用栈的特点将2进制数转换为10进制数 */ #include<stdio.h> #include<stdlib.h> #include<math.h> #define ElemType char #define Init_

进制(二进制、十进制、八进制、十六进制)

对于整数,有四种表示方式: 二进制:0,1 ,满2进1.以0b或0B开头. 十进制:0-9 ,满10进1. 八进制:0-7 ,满8进1. 以数字0开头表示. 十六进制:0-9及A-F,满16进1. 以0x或0X开头表示.此处的A-F不区分大小写. 如:0x21AF +1= 0X21B0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 A B C D E F 1.原码.反码.补码   所有数字在计算机底层都以二进制形式存在.  计

进制的意义和算法

1.问题 1.1 苹果装箱 小明家摘了123个苹果,10个苹果可以装满1箱,10箱苹果就可以装满1车拉到批发市场去出售了,问这些苹果一共能装满几车,几箱,还剩几个苹果? 聪明的朋友可能直接给出答案是1车2箱,最后剩3个苹果. 计算的过程: 123个 / 10 = 12箱,余3个苹果 12箱 / 10 = 1车,余2箱 当然,有朋友会立即指出,为啥要这么SB的算,123的百位1不就是1车,十位2 = 2箱,个位3 = 3个 没错,这就是123这个数表示的意义.百位表示车的数量,十位表示箱的数量,个

C++进制转换(十进制转二进制、八进制、随意进制)

十进制转二进制: //十进制转二进制 #include<iostream> using namespace std; void printbinary(const unsigned int val) { for(int i = 16; i >= 0; i--) { if(val & (1 << i)) cout << "1"; else cout << "0"; } } int main() { prin

C语言:其他进制数转换为十进制(方法一)

#include<stdio.h> #include<math.h> #include<string.h> //其他任意进制转换为十进制 int main() { int trans(char a[],int ); char strupr(char ); char arr[100]; int t; printf("请输入进制的类型:"); scanf("%d",&t); printf("请输入该进制的数:&quo

2016.1.26 进制转换

2016.1.26 二进制 1:二进制转8进制(3位为一组) (11001111.01111)2=(11 001 111.011 110)2=(317.36)8 1*21+1*20=3  1*20=1  1*22+1*21+1*20=7  1*21+1*20=3  1*22+1*21=6 2:二进制转10进制 (10110)2=(22)10 1*24+1*22+1*21=22 3:二进制转16进制(4位为一组) (11010110)2=(D6)16 1101=1*23+1*22+1*20=13=

【进制】二进制十进制转换练习

进制转换练习题22.8125 整数部分除2取余数,商继续除22/2 余 011/2 15/2 12/2 01倒叙串起来整数部分为 10110小数部分乘2 取整数部分,顺序和整数不一样 0.8125*2 = 1.625 10.625*2 = 1.25 10.25*2 = 0.5 00.5*2 = 1 1结束 正序串起来 1101 10110.1101 十进制转二进制 整数部分 倒序 10110 0*2^0+1*2^1+1*2^2+0*2^3+1*2^4 2+4+16 =22 小数部分正序负数幂11