加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl模块将数字转换为字母表示法

发布时间:2020-12-15 23:35:10 所属栏目:大数据 来源:网络整理
导读:是否有perl模块将数字转换为字母,反之亦然? 例如 1 = A 2 = B3 = C...27 = AA28 = AB29 = AC...53 = BA54 = BB55 = BC 等等等等. 解决方法 此代码显示了一个功能a2n,可以满足您的需要 use strict;use warnings;printf "%2s = %dn",$_,a2n($_) for qw/ A B
是否有perl模块将数字转换为字母,反之亦然?

例如

1 = A 
2 = B
3 = C
...
27 = AA
28 = AB
29 = AC
...
53 = BA
54 = BB
55 = BC

等等等等.

解决方法

此代码显示了一个功能a2n,可以满足您的需要

use strict;
use warnings;

printf "%2s = %dn",$_,a2n($_) for qw/ A B C AA AB AC BA BB BC /;

sub a2n {
  my $n = 0;
  $n = $n * 26 + $_ for map { ord($_) & 0x1F } split //,shift;
  $n;
}

产量

A = 1
 B = 2
 C = 3
AA = 27
AB = 28
AC = 29
BA = 53
BB = 54
BC = 55

相应的n2a看起来像这样

sub n2a {
  my ($n) = @_;
  my @a;
  while ($n > 0) {
    unshift @a,($n-1) % 26;
    $n = int(($n-1)/26); #Edited for failing corner case
  }
  join '',map chr(ord('A') + $_),@a;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读