字符串压缩 62进制 微博缩短网址

遇到一个瓶颈,当COOKIE数据达到5K以上的时候,只好将COOKIE数据进行压缩,以减少数据的大小

Java代码  

  1. <?php  
  2. //十进制转到其他制  
  3. function dec2any($num, $base = 62, $index = false)  
  4. {  
  5.     if (!$base) {  
  6.         $base = strlen($index);  
  7.     } elseif (!$index) {  
  8.         $index = substr("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, $base);  
  9.     }  
  10.     $out = "";  
  11.     for ($t = floor(log10($num) / log10($base)); $t >= 0; $t--) {  
  12.         $a = floor($num / pow($base, $t));  
  13.         $out = $out . substr($index, $a, 1);  
  14.         $num = $num - ($a * pow($base, $t));  
  15.     }  
  16.     return $out;  
  17. }  
  18.   
  19. function any2dec($num, $base = 62, $index = false)  
  20. {  
  21.     if (!$base) {  
  22.         $base = strlen($index);  
  23.     } elseif (!$index) {  
  24.         $index = substr("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, $base);  
  25.     }  
  26.     $out = 0;  
  27.     $len = strlen($num) - 1;  
  28.     for ($t = 0; $t <= $len; $t++) {  
  29.         $out = $out + strpos($index, substr($num, $t, 1)) * pow($base, $len - $t);  
  30.     }  
  31.     return $out;  
  32. }  
  33. ?>  

加网-分享按钮!

http://share.baidu.com/

时间: 2024-07-28 17:00:13

字符串压缩 62进制 微博缩短网址的相关文章

算法:62进制的简单实现

62 进制需要的字符及次序: 0..9 a..z A..Z; 只实现了 62 进制字符串与正整数的互换. unit H62; interfaceuses SysUtils; function IntToH62(N: UInt64): string; //整数转到 62 进制字符串 function H62ToInt(S: string): UInt64; //62 进制字符串转到整数 implementationfunction _C2B(C: Char): Byte; inline; begi

使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)_python

不过,status中包含了一个mid字段,通过mid,我们实际上是可以通过计算得到url的. 在开始计算之前有必要说明一下,什么是base62编码.它实际上就是十进制和62位进制的互换.对于62进制,从0数到9以后,10用小写字母a表示,接着数完26个字母,到z为35,然后36为大写字母A,一直到61为大写字母Z.所以,我们可以实现十进制数字base62编码的encode和decode.下面的代码实际上来自stackoverflow: 复制代码 代码如下: ALPHABET = "0123456

10进制整数转62进制的函数

  /** * 10进制转为62进制 * * @param integer $n 10进制数值 * @return string 62进制 */ function dec62($n) { $base = 62; $index = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $ret = ''; for($t = floor(log10($n) / log10($base)); $t >= 0; $t --)

[HOWTO]ORACLE中如何实现ASC字符串和16进制串互相转换

oracle|转换|字符串 ORACLE中如何实现ASC字符串和16进制串互相转换 欢迎大家同我交流:enhydraboy   enhydra_boy@tom.com 欢迎转载,请保留本声明,谢谢! 下面是笔者以前回答csdn论坛上问题的总结,希望对大家有用. ASC字符串==>16进制串 create or replace function AscToHex(sIn IN varchar2)RETURN varchar2ISsTmp varchar2(4000);i integer;BEGIN

c语言-如何将数字字符串转为16进制字符串?

问题描述 如何将数字字符串转为16进制字符串? 请教一个示例:如何将数字字符串转为16进制字符串?字符串:char str[20]="1234567890123456";将中间的"789012"转换为16进制的"0C0A14":最后str=""1234560C0A143456"" 如果有描述不清的地方,请指出.多谢! 解决方案 你先用字符串截取到 比如strstr等,""789012&q

vb.net 字符串转16进制

问题描述 字符串1:sd13A你好字符串2:2014年08月23日星期六8:59:23把字符串转16进制---------求代码!再把16进制转回中文---求代码!额,就是求互转代码!新手求助! 解决方案 解决方案二:"字符串转16进制"这个说法缺乏必要的逻辑性.只有一个整数才能表现为2进制.8进制.10进制.16进制之类的概念.字符串是一个高级的概念,那么你的逻辑就应该稍微高级一点.比如说"unicode编码的byte[]数组"."byte[]数组的ba

javascript 10进制和62进制的相互转换_javascript技巧

function string10to62(number) { var chars = '0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'.split(''), radix = chars.length, qutient = +number, arr = []; do { mod = qutient % radix; qutient = (qutient - mod) / radix; arr.unshift(char

php 打印出字符串的16进制

 代码如下 复制代码 <?php /* php 打印出字符串的16进制数据 */ function hex_dump($data, $newline="n") {   static $from = '';   static $to = '';     static $width = 16; # number of bytes per line     static $pad = '.'; # padding for non-visible characters     if ($

关于PHP中字符串与多进制转换函数的实例代码_php实例

转换函数 /** * [字符串转换为(2,8,16进制)ASCII码] * @param string $str [待处理字符串] * @param boolean $encode [字符串转换为ASCII|ASCII转换为字符串] * @param string $intType [2,8,16进制标示] * @return string byte_str [处理结果] * @author alexander */ function strtoascii($str, $encode=true,