php 26位字母转换成数字(26进制字母转换)

2023-03-06 12:58:32 密语知识 思思

?php

$str="aa";//写你想要算的字符串;

$v;

function getv($s){

$arr=str_split($s,1);

for ($i=0;$istrlen($s);$i++)

{

$v=gett($arr[$i])*getw(strlen($s)-$i-1)+$v;

}

echo $v;

}

function getw($w){

$x=1;

for ($i=0;$i$w;$i++){

$x=26*$x;

}

return $x;

}

function gett($ch){

return (ord($ch)-96);

}

echo getv($str);

?

aa,刚好就是27.你试试吧

209278872115转换成26进制的字母是多少啊

先26禁止那么就需要26个符号,可以用0~9加上16个字符。

这里为了方便直接取26个英文字母。A表示0,B为1,,,,一直到Z表示25.

2092 7887 2115/26=8049 1873 89余1

8049 1873 89 /26=309584130 余9

309584130 /26=11907081 余24

11907081 /26=457964 余17

457964 /26=17614 余0

17614/26=677余12 677/26=26余1 26/26=1余0 1/26=0余1

对应的 为:01 00 01 12 00 17 24 09 01

转为字母: BABLAQXIB

10进制与26进制的转换

十进制和26进制转换算法:

/// summary

/// 将指定的自然数转换为26进制表示。映射关系:[1-26] -[A-Z]。

/// /summary

/// param name="n"自然数(如果无效,则返回空字符串)。/param

/// returns26进制表示。/returns

public static string ToNumberSystem26(int n){

  string s = string.Empty;

  while (n 0){

      int m = n % 26;

      if (m == 0) m = 26;

      s = (char)(m + 64) + s;

      n = (n - m) / 26;

  }

  return s;

}

/// summary

/// 将指定的26进制表示转换为自然数。映射关系:[A-Z] -[1-26]。

/// /summary

/// param name="s"26进制表示(如果无效,则返回0)。/param

/// returns自然数。/returns

public static int FromNumberSystem26(string s){

  if (string.IsNullOrEmpty(s)) return 0;

  int n = 0;

  for (int i = s.Length - 1, j = 1; i = 0; i--, j *= 26){

      char c = Char.ToUpper(s[i]);

      if (c 'A' || c 'Z') return 0;

      n += ((int)c - 64) * j;

  }

  return n;

}

static void Main(string[] args){

  int[] numbers = { 1, 10, 26, 27, 256, 702, 703 };

  foreach (int n in numbers){

      string s = ToNumberSystem26(n);

      Console.WriteLine(n + "\t" + s + "\t" + FromNumberSystem26(s));

  }

  Console.ReadLine();

}

扩展资料

需要不同进制的原因:

二进制是因为计算机只能表示两个状态0,1,(0好比开关关,1可以表示成开关接通)。所以计算机只能“认识”二进制数。二进制“逢二进一”。

人类用十进制,计算机用二进制,但如果想要更好的去研究和理解计算机的运作时,光用二进制表达和描述会非常不直观、不方便。因为二进制太长了,比如一个整数(十进制),32位机中二进制有32位。

如果用十六进制就只要8位,表达和描述上会方便很多,互转时也可以直接转,不像十进制哪样复杂。(因为8,16,是2的3,4次方)

十六进制转二进制,一位转四位,反过来是四位转一位;八进制转二进制,一位转三位,反过来是三位转一位。