base62_encode|base64_decode 的PHP实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了base62_encode|base64_decode 的PHP实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2566字,纯文字阅读大概需要4分钟。
内容图文
完全参照Java 改写了一版本PHP,希望能提供方便。
<?php Class Base62 { private static $encodes = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /* public static StringBuffer encodeBase62(byte[] data) { StringBuffer sb = new StringBuffer(data.length * 2); int pos = 0, val = 0; for (int i = 0; i < data.length; i++) { val = (val << 8) | (data[i] & 0xFF); pos += 8; while (pos > 5) { char c = encodes[val >> (pos -= 6)]; sb.append( c == 'i' ? "ia" : (c == '+' ? "ib" :( c == '/' ? "ic" : c))); val &= ((1 << pos) - 1); } } if (pos > 0) { char c = encodes[val << (6 - pos)]; sb.append( c == 'i' ? "ia" : (c == '+' ? "ib" :( c == '/' ? "ic" : c))); } return sb; } */ public static function base62_encode($data) { $sb = ''; $len = strlen($data); $pos = $val = 0; for($i= 0; $i < $len; $i++){ $tv = substr($data, $i, 1); $val = ($val << 8) | (ord($tv) & 0xFF); $pos += 8; while($pos > 5){ $c = substr(self::$encodes, $val >> ($pos -= 6), 1); $sb .= $c == 'i' ? "ia" : (($c == '+') ? "ib" : (($c == '/') ? 'ic' : $c)); $val &= ((1<<$pos) -1); } } if($pos > 0){ $c = substr(self::$encodes, $val << (6 - $pos), 1); $sb .= ($c == 'i') ? "ia" : (($c == '+') ? "ib" : (($c == '/') ? 'ic' : $c)); } return $sb; } /* public static byte[] decodeBase62(char[] data) { ByteArrayOutputStream baos = new ByteArrayOutputStream(data.length); int pos = 0, val = 0; for (int i = 0; i < data.length; i++) { char c = data[i]; if (c == 'i') { c = data[++i]; c = c == 'a' ? 'i' : (c == 'b' ? '+' : (c == 'c' ? '/' : data[--i])); } val = (val << 6) | decodes[c]; pos += 6; while (pos > 7) { baos.write(val >> (pos -= 8)); val &= ((1 << pos) - 1); } } return baos.toByteArray(); } */ public static function base62_decode($data) { $baos = ''; $pos = $val = 0; $len = strlen($data); for($i = 0; $i < $len; $i++){ $c = substr($data, $i, 1); if($c == 'i'){ $c = substr($data, ++$i, 1); $c = ($c == 'a') ? 'i' : ($c == 'b' ? '+' : ($c == 'c' ? '/' : substr($data, --$i, 1))); } $val = ($val << 6) | strpos(self::$encodes, $c); $pos += 6; while($pos > 7){ $tv = ($val >> ($pos -= 8)); //var_dump($tv); $baos .= chr($tv); $val &= ((1 << $pos) - 1); } } return $baos; } } foreach([1,2,3,'a','b', 'c', 'addddd', '111', 'fkdskfjdsljflsdjfljsaldkjflaskjfldskjlfkjdslkfjladskjfldsk'] as $v){ var_dump($v); $b = Base62::base62_encode($v); var_dump($b); var_dump(base64_encode($v)); var_dump(Base62::base62_decode($b)); echo "----------------------\n"; }
内容总结
以上是互联网集市为您收集整理的base62_encode|base64_decode 的PHP实现全部内容,希望文章能够帮你解决base62_encode|base64_decode 的PHP实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。