Menu

Tree [242a4e] master /
 History

HTTPS access


File Date Author Commit
 .project 2016-12-02 Wadelau Wadelau [9cce49] bugfix on java ver, drafting.
 Base62x.An.alternative.approach.to.Base64.for.non-alphanumeric.characters.pdf 2016-09-25 Wadelau Wadelau [82bdd3] long filename rename removing blanks.
 Base62x.class.js 2017-02-17 Wadelau Wadelau [4056a5] imprvs on number conversions.
 Base62x.class.jsp 2017-02-17 Wadelau Wadelau [4056a5] imprvs on number conversions.
 README.md 2017-02-18 Wadelau Wadelau [2fd1d5] Update README.md
 base62x.as.php.module.201704.tar.gz 2017-04-07 Wadelau Wadelau [c60e80] base62x as php module.
 base62x.c 2017-05-04 Wadelau Wadelau [242a4e] coding refine.
 base62x.class.php 2017-04-07 Liu Zhenxing Liu Zhenxing [21c6cf] bugfix on \0 in I/O
 base62x.php5.class.php 2017-02-14 Wadelau Wadelau [dcdfc6] updates on number conversions.
 base62x.presentation.201107.pdf 2016-04-03 Wadelau Wadelau [ed6b34] init. v0.7
 base62x_test.js.html 2017-02-17 Wadelau Wadelau [4056a5] imprvs on number conversions.
 base62x_test.jsp 2017-02-17 Wadelau Wadelau [4056a5] imprvs on number conversions.
 base62x_test.php 2016-12-03 Bangco Bangco [ed6b0e] bugfix of outOfIndexOfArray with Base62x in Java.
 refer.tomcat.201612.txt 2016-12-02 Wadelau Wadelau [9cce49] bugfix on java ver, drafting.
 tools.function.php 2016-12-03 Bangco Bangco [ed6b0e] bugfix of outOfIndexOfArray with Base62x in Java.

Read Me

-Base62x

Base62x is an alternative approach to Base 64 without symbols in output.

base62x

Compact, purified and even shorter!

-Base62x . -Base62x Online

-Base62x Usage

Base62x.encode(myString);

Base62x.decode(encodedString);

Base62x.encode(myString, inBase);

Base62x.decode(encodedString, outBase);

-Base62x Paper in IEEE

Article Number, 6020065 ;

-R/C2TZ , page url in -URL4P .

base62x.c

base62x.c

shell> gcc -lm base62x.c -o base62x

shell>./base62x

Usage: ./base62x [-v] [-n <2|8|10|16|32>] <-enc|dec> string

Version: 0.90

shell> mi=0; umi=0; for i in {1..10000}; \
    do \
    r=`cat /dev/urandom|tr -dc 'a-zA-Z0-9'|fold -w 16|head -n 1`; \
    r2=`cat /dev/urandom|tr -dc 'a-zA-Z0-9'|fold -w 16|head -n 1`; \
    a="$r中文时间a$r2"; b=`./base62x -enc $a`; c=`./base62x -dec $b`; \
    if [ "$a" == "$c" ]; then d="matched";mi=`expr $mi + 1`;\
    else d="unmatched"; umi=`expr $umi + 1`; fi;\
    echo -e "a=$a b="$b" c="$c" d="$d" mi="$mi" umi="$umi"\n"; \
    done

Base62x in -PHP

base62x.class.php

base62x_test.php

In base62x_test.php

<?php

include("./base62x.class.php");

$s = "abcd1234";

$s2 = "abc中文123";

$s3 = "\"Tcler's Wiki: UTF-8 bit by bit (Revision 6)\". 2009-04-25. Retrieved 2009-05-22."
    ."In orthodox UTF-8, a NUL byte (\\x00) is represented by a NUL byte. […] But […] we "
    ."[…] want NUL bytes inside […] strings […] | ① ② ③ ④ ⑤ ⑥ ⑦ |  Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ | "
    ."!  # $ % & ' ( ) * + , - . /";

print "[$s] encoded:[".($s_enc=Base62x::encode($s))."]\n";
print "[$s_enc] decoded:[".($s_dec=Base62x::decode($s_enc))."]\n";

print "\n[$s2] encoded:[".($s2_enc=Base62x::encode($s2))."]\n";
print "[$s2_enc] decoded:[".($s2_dec=Base62x::decode($s2_enc))."]\n";

print "\n[$s3] encoded:[".($s3_enc=Base62x::encode($s3))."]\n";
print "[$s3_enc] decoded:[".($s3_dec=Base62x::decode($s3_enc))."]\n";

?>

Base62x in -Java

Base62x.class.jsp

base62x_test.jsp

In base62x_test.jsp

<%@page 
    import="java.util.Date,
        java.util.HashMap,
        java.util.Map,
        java.util.Iterator"
    language="java" 
    pageEncoding="UTF-8"%><%

//- system
System.setProperty("sun.jnu.encoding", "UTF-8");
System.setProperty("file.encoding", "UTF-8"); //- set " -Dfile.encoding=utf8 " in jvm start script

//- request
request.setCharacterEncoding("UTF-8");

//- response
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");

%><%@include file="./Base62x.class.jsp"%><%

//- Test and examples of Base62x
//- Sun Aug 14 14:09:45 CST 2016
//- Wadelau@ufqi.com

String s = "abcd1234";
String s2 = "abc中文123";
String s3 = "\"Tcler's Wiki: UTF-8 bit by bit (Revision 6)\". 2009-04-25. Retrieved 2009-05-22."
    + "In orthodox UTF-8, a NUL byte (\\x00)"
    + "is represented by a NUL byte. […] But […] we […] want NUL bytes inside […] strings […] "
    + "| ① ② ③ ④ ⑤ ⑥ ⑦ "
    + "| Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ | ! # $ % & ' ( ) * + , - . /";

String s_enc, s_dec, s2_enc, s2_dec, s3_enc, s3_dec;

out.println("<br/>["+s+"] encoded:["+(s_enc=Base62x.encode(s))+"]");
out.println("<br/>["+s_enc+"] decoded:["+(s_dec=Base62x.decode(s_enc))+"]");

out.println("<br/>["+s2+"] encoded:["+(s2_enc=Base62x.encode(s2))+"]");
out.println("<br/>["+s2_enc+"] decoded:["+(s2_dec=Base62x.decode(s2_enc))+"]");

out.println("<br/>["+s3+"] encoded:["+(s3_enc=Base62x.encode(s3))+"]");
out.println("<br/>["+s3_enc+"] decoded:["+(s3_dec=Base62x.decode(s3_enc))+"]");

%>

Base62x in -JavaScript

Base62x.class.js

base62x_test.js.html

In base62x_test.js.html

var randi = Math.ceil(Math.random()*10000);
var s = randi+'abcd'+(randi*randi)+'1234@'+(randi%2==0?'中國-文化-源遠流長'
    +randi+':::':randi)+(new Date())+'@'+Math.ceil(Math.random()*100000);
var encs = Base62x.encode(s);
var decs = Base62x.decode(encs);

var inum = randi+'a'+1+randi+'fea'; var ibase = 16; var obase = 16;
var num_enc = Base62x.encode(inum, ibase);
var num_dec = Base62x.decode(num_enc, obase);

Base62x in -Perl

@todo