-Base62x 新增 -Perl 版本技術實現 Base62x.pm

wadelau發表於2019-01-19

在此前的一篇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

相關文章