进制闲谈

今天在做一个人员编号:A B C D ... Z AA AB AC AD. 即编号从A-Z然后AA~AZ,增加到BA~...ZZ。大概思路:ASCII十进制的65-90为A-Z,大于90加左边的字符,如91=>'AA'。

一开始没了解到这是个进制,做了半天改来改去发现改好的样子很熟悉,跑数据时候才发觉是进制:

prev_code=parseInt((nickname_code-91)/26+65);
next_code=(nickname_code-91)%26+65;

 

这不就是逢26(Z)进1(A)么,26进制。之前没好好考虑,脑子被吃了。 存储之后再次编辑需要处理:从AA->91,BZ->142。既然知道是进制,就很简单了。

$code1=ord($char[0]);
$code2=ord($char[1]);
$code=($code1-64)*26+$code2;//乘基数26

 'BZ'代入进去,(66-64)*26+90=142。Ok.

 

posted @ 2017-06-06 16:21  姜小豆  阅读(227)  评论(2编辑  收藏  举报