一个非常好的16进制转62进制PHP函数,谁有ASP版,或参照这个Php版整一个??

luok 2014-01-03 04:44:54
这是一个16进制62进制互转的PHP程序,很强大啊,谁能帮忙参照这个,改一个ASP/vb版?多谢
这个很好用,一下就能把%E8%BF%9B%E5%88.htm这种地址变短,同时里面DICT可以按需打乱顺序,别人也不可能知道你地址代表什么中文。


得到一个32位的16进制测试串
$c = md5('ffff');

echo $c, PHP_EOL;

echo $r = convert($c, 62), PHP_EOL;
echo convert($r, -62);

function convert($s, $to=62) {
$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$res = '';
$b = '';
if($to > 0) {
$to = ceil(log($to, 2));//调整到2的k次方
for($i=0; $i<strlen($s); $i++) $b .= sprintf('%04b', hexdec($s{$i}));
while(strlen($b) >= $to) {
$res = $dict{bindec(substr($b, -$to))} . $res;
$b = substr($b, 0, -$to);
}
$res = $dict{bindec($b)} . $res;
return $res;
}
$to = ceil(log(-$to, 2));
for($i=0; $i<strlen($s); $i++) $b .= sprintf("%0{$to}b", strpos($dict, $s{$i}));
while(strlen($b) > 4) {
$res = $dict{bindec(substr($b, -4))} . $res;
$b = substr($b, 0, -4);
}
if(bindec($b)) $res = $dict{bindec($b)} . $res;
return $res;
}
...全文
1104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luok 2014-04-26
  • 打赏
  • 举报
回复
有人能帮忙么?
luok 2014-04-21
  • 打赏
  • 举报
回复
积分看来没有吸引力,现金求吧,现金求一段ASP代码: 就是实现 把DF8787DF787FD787FDF7DF7D这样的16进制,转成Av3t0BmoPqD这种样子的62进制。 功能同上面那个PHP
luok 2014-04-21
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
其实你找个 asp 版的 base64 程序改改就成了 比如 http://www.knowsky.com/609.html 我没有 asp 环境,不然就帮你写了
感谢版主回复! 不知道原理,还真不知道如何修改BASE64 ,哎
xuzuning 2014-04-21
  • 打赏
  • 举报
回复
其实你找个 asp 版的 base64 程序改改就成了 比如 http://www.knowsky.com/609.html 我没有 asp 环境,不然就帮你写了
luok 2014-04-17
  • 打赏
  • 举报
回复
引用 2 楼 eliphe 的回复:
我写过16进制与62进制互转的C#版本,不过,asp版的没有......
能否贴来参考下??
eliphe 2014-01-11
  • 打赏
  • 举报
回复
我写过16进制与62进制互转的C#版本,不过,asp版的没有......
Anlige 2014-01-07
  • 打赏
  • 举报
回复

28,389

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧