文档章节

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

Wadelau
 Wadelau
发布于 2018/09/08 09:13
字数 693
阅读 8
收藏 0

在此前的一篇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!\n”;
    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!\n”;
    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/72SP 

© 著作权归作者所有

Wadelau
粉丝 2
博文 28
码字总数 39834
作品 0
东城
架构师
私信 提问
Base62x算法改进并增加Base62x in Python

距离上次 “-Base62x 新增 -Perl 版本技术实现 Base62x.pm (-R/J2SL )”, Base62x 在时隔 6 个月后又进行了一些更新,记录一下,也再次印证,最好的版本永远是下一个版本。这次的更新包括...

wadelau
03/13
37
0
Wadelau/Base62x

-Base62x Base62x is an alternative approach to Base 64 without symbols in output. Compact, purified and even shorter! -Base62x . -Base62x Online -Base62x Usage Base62x.encode(my......

Wadelau
2017/01/16
0
0
PacketFence 2.2.1 发布,网络接入控制

这是一个小更新版本,主要是提升了稳定性,新增的硬件支持包括:AeroHIVE AP, Dlink DES3550, DGS3200, and HP ProCurve 5400 系列。 PacketFence是开源NAC (网络接入控制) 中的佼佼者,它可...

红薯
2011/06/17
472
0
sjdy521/Mojo-Weixin

Mojo-Weixin v1.3.4 使用Perl语言编写的微信客户端框架,基于Mojolicious,要求Perl版本5.10+,可通过插件提供基于HTTP协议的api接口供其他语言或系统调用 郑重声明 本项目完全遵循微信官方提...

sjdy521
2016/02/05
0
0
Perl 5.12.0 发布

Perl是一种脚本语言。 最初的设计者为拉里·沃尔(Larry Wall),它於1987年12月18日發表。Perl借取了C、sed、awk、shell scripting 以及很多其他程式語言的特性。其中最重要的特性是他内部集...

红薯
2010/04/13
370
0

没有更多内容

加载失败,请刷新页面

加载更多

cesium调用天地图服务

本文转载于:专业的前端网站➧cesium调用天地图服务 全球矢量地图服务 var viewer = new Cesium.Viewer("cesiumContainer", { animation: false, //是否显示动画控件 baseLayerPi...

前端老手
26分钟前
4
0
Docker常用命令

场景一:镜像下载、运行及删除 COMMAND DESC 查看 docker images 列出所有镜像(images) docker ps 列出正在运行的容器(containers) docker ps -a 列出所有的容器 docker pull centos 下载cen...

_Change_
26分钟前
5
0
Spark ML使用DataFrame进行K-Means

1.前言 前一篇文章使用了RDD的方式,进行了K-Means聚类. 从Spark 2.0开始,程序包中基于RDD的API spark.mllib已进入维护模式.现在,用于Spark的主要机器学习API是软件包中基于DataFrame的API...

一位不知名的帅气网友
29分钟前
4
0
当遇到美女面试官之如何理解Redis的Expire Key(过期键)

  在面试中遇到美女面试官时,我们以为面试会比较容易过,也能好好表现自己技术的时候了。然而却出现以下这一幕,当美女面试官听说你使用过Redis时,那么问题来了。 👩面试官:Q1,你知道...

ccww_
33分钟前
5
0
干货来袭!游戏背景音乐的角色创建和主界面

角色创建/选择 在一些大型的游戏中,例如多人在线的游戏玩家必须创建一个游戏的虚拟人物进行扮演游戏。初次玩这款游戏的人都会进行创建,选择职业起名字性别选择编辑人设样式等等的操作,通常...

奇亿音乐
37分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部