资讯专栏INFORMATION COLUMN

-Base62x 新增 -Perl 版本技术实现 Base62x.pm

weij / 2717人阅读

摘要:同的其他版本相通,实现了跨编程语言运行时环境的数据安全交换。函数式编程的除了式的写法,还提供了函数式编程的调用方式,列如下。函数式编程适合单一次启动并运行的使用场景。

在此前的一篇Blog(-R/G2SW )中,“-gMIS 吉密斯优化更新+分组项区段AddGroupBySeg/+复制AddByCopy等”, 我们提到“注册动作registerAct: 改进增加 Base62x.class.js”, 初尝跨编程语言、运行时环境进行数据交换的便利,这次也因着部署一个新的 -GWA2 的项目,需要在 -PHP 和 -Perl 中进行多字节非ASCII字符数据的传递,于是就推荐了 -Base62x , 这样 Base62x in Perl 的工作就排上日程,在两个周末的实验下,完成了 Base62x in Perl 的初个版本. 如下是一些使用细节,同时也可以在 -GitHub-Wadelau 上寻找获得, 或者直接访问 -Base62x .

1. 面向对象编程OOP的 Base62x.pm
use Base62x;

my $base62x = Base62x->new();
my $str = “Hello World!
”;
my $encoded = $base62x->encode($str);
$str = $base62x->decode($encoded);

在 Perl 程序的开始,引入 Base62x.pm , 然后生成相应的对象实例,通过调用 该实例的 encode/decode 方法实现相应的编码与解码。
同 Base62x 的其他版本相通,实现了跨编程语言、运行时环境的数据安全交换。
同 Base62x的其他版本一样,Perl版本也实现了针对数字进制转换和ASCII快捷处理的相关方法。如,

my $i = 100;
    # treas $i as base 10 and transform it into Base62x
my $numInBase62x = $base62x->encode($i, 10);
    # try to decode a Base62x num into base 10
$i = $base62x->decode($numInBase62x, 10);

OOP的调用方式,适合进行循环内反复调用的使用场景,由于在实例化时,进行了环境变量的初始化而节省了后续重复动作。
.

2. 函数式编程的Base62x.pm

除了 OOP式的写法,Base62x.pm 还提供了函数式编程的调用方式,列如下。

use Base62x qw (base62x_encode base62x_decode);

my $str = “Hello World!
”;
my $encoded = base62x_encode($str);
$str = base62x_decode($encoded);

函数式编程适合单一次启动并运行的使用场景。
详细实现可以参考 Base62x.pm 的代码。
.

截止目前,Base62x 已经可以提供的编程语言版本包括 C, Java, PHP, JavaScript, Perl. 其中JavaScript 还有两个实现, Base62x.class.js 和 npm base62x.

Base62x: An alternative approach to Base64 for only-alphanumeric characters in output.
Base62x is an non-symbolic Base64 encoding scheme. It can be used safely in computer file systems, programming languages for data exchange, internet communication systems, and is an ideal substitute and successor of many variants of Base64 encoding scheme.
Base62x 是一种无符号的Base64编码方案。在计算机文件系统、编程语言数据交换、互联网络通信系统中可以安全地使用,同时是各种变种Base64编码方案的理想替代品、继任者。

-R/J2SL

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29989.html

相关文章

  • Vultr,墨西哥云服务器测评 – vu的第19个数据中心

    摘要:的布局势头很猛,上个月也就是月份新增了欧洲的瑞典节点,随后在本月也就是月日,在北美洲又新增了一个墨西哥节点。当然从墨西哥到国内,这个线路肯定还要横穿美国了。联通回程,联通依然走,国内走联通。vultr的布局势头很猛,上个月也就是9月份新增了欧洲的瑞典节点,随后在本月也就是10月6日,在北美洲又新增了一个墨西哥节点。这已经是vultr的第19个数据中心了,就目前的情形来看,vultr应该不会停...

    miguel.jiang 评论0 收藏0
  • CSS 单位 px rem em

    摘要:所以未经调整的浏览器都符合。原因可能是处理汉字时,对于浮点的取值精确度有限。是新增的一个相对单位,根。目前,除了及更早版本外,所有浏览器均已支持。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。 单位转换工具 点我 px px是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数)...

    CHENGKANG 评论0 收藏0
  • SpringBoot高级篇MongoDB之修改基本使用姿势

    摘要:原文高级篇之修改基本使用姿势本篇依然是中的一篇,主要介绍的更新,主要内容如下常见类型成员的修改数组类型成员的增删改类型成员的增删改基本使用首先是准备好基本环境,可以参考博文高级篇之基本环境搭建与使用高级篇之查询基本使用姿势在开 原文: 190218-SpringBoot高级篇MongoDB之修改基本使用姿势 本篇依然是MongoDB curd中的一篇,主要介绍document的更新,...

    lauren_liuling 评论0 收藏0
  • PHP面试

    摘要:服务器返回此响应对或请求的响应时,会自动将请求者转到新位置。未授权请求要求身份验证。方法禁用禁用请求中指定的方法。请求范围不符合要求如果页面无法提供请求的范围,则服务器会返回此状态代码。服务不可用服务器目前无法使用由于超载或停机维护。 PHP基础篇 打印函数 简述一下echo print print_r var_dump区别 echo 输出一个或多个字符串,无返回值print 仅支持一...

    trilever 评论0 收藏0
  • css面试题

    摘要:目前,除了及更早版本外,所有浏览器均已支持。视口单位中的视口,桌面端指的是浏览器的可视区域移动端指的就是中的。根据规范,视口单位主要包括以下个等于视口宽度的。等于视口高度的。生成相对定位的元素,相对于其正常位置进行定位。 css面试题 css垂直居中的方法有哪些? 已知高度的块级子元素,采用绝对定位和负边距.container { position: relative;}.verti...

    longmon 评论0 收藏0
  • 每个JavaScript开发人员都应该知道的新ES2018功能(译文)

    摘要:为了使程序员能够一次一个地处理集合中的元素,引入了迭代器接口。迭代器使用该方法获取对象属性名称的数组,然后将其分配给常量。迭代器的缺点是它们不适合表示异步数据源。每次循环时,都会调用迭代器的方法,它返回一个。 前言 原文地址:https://css-tricks.com/new-es2018-features-every-javascript-developer-should-kno...

    leonardofed 评论0 收藏0

发表评论

0条评论

weij

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<