ASCII码与字符串的相互转换
生活随笔
收集整理的這篇文章主要介紹了
ASCII码与字符串的相互转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
#問題:
在做微信跳轉的時候遇到一個問題,就是需要在回信回調頁面上再加上一個自己的回調頁面,以便在獲得用戶openid后接著跳轉,結果自己的頁面urlencode后步行,最終微信調回來的時候我們的地址無法或得到完整只得到http:后面的就丟失了。原因是urlencode在微信服務器那邊解析過了,怎么讓自己的網址不解析呢,我們就對網址進行ASCII碼
<?phpclass ascii {/*** 將ascii碼轉為字符串* @param type $str 要解碼的字符串* @param type $prefix 前綴,默認:&#* @return type*/function decode($str, $prefix="&#") {$str = str_replace($prefix, "", $str);$a = explode(";", $str);foreach ($a as $dec) {if ($dec < 128) {$utf .= chr($dec);} else if ($dec < 2048) {$utf .= chr(192 + (($dec - ($dec % 64)) / 64));$utf .= chr(128 + ($dec % 64));} else {$utf .= chr(224 + (($dec - ($dec % 4096)) / 4096));$utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));$utf .= chr(128 + ($dec % 64));}}return $utf;}/*** 將字符串轉換為ascii碼* @param type $c 要編碼的字符串* @param type $prefix 前綴,默認:&#* @return string*/function encode($c, $prefix="&#") {$len = strlen($c);$a = 0;while ($a < $len) {$ud = 0;if (ord($c{$a}) >= 0 && ord($c{$a}) <= 127) {$ud = ord($c{$a});$a += 1;} else if (ord($c{$a}) >= 192 && ord($c{$a}) <= 223) {$ud = (ord($c{$a}) - 192) * 64 + (ord($c{$a + 1}) - 128);$a += 2;} else if (ord($c{$a}) >= 224 && ord($c{$a}) <= 239) {$ud = (ord($c{$a}) - 224) * 4096 + (ord($c{$a + 1}) - 128) * 64 + (ord($c{$a + 2}) - 128);$a += 3;} else if (ord($c{$a}) >= 240 && ord($c{$a}) <= 247) {$ud = (ord($c{$a}) - 240) * 262144 + (ord($c{$a + 1}) - 128) * 4096 + (ord($c{$a + 2}) - 128) * 64 + (ord($c{$a + 3}) - 128);$a += 4;} else if (ord($c{$a}) >= 248 && ord($c{$a}) <= 251) {$ud = (ord($c{$a}) - 248) * 16777216 + (ord($c{$a + 1}) - 128) * 262144 + (ord($c{$a + 2}) - 128) * 4096 + (ord($c{$a + 3}) - 128) * 64 + (ord($c{$a + 4}) - 128);$a += 5;} else if (ord($c{$a}) >= 252 && ord($c{$a}) <= 253) {56 $ud = (ord($c{$a}) - 252) * 1073741824 + (ord($c{$a + 1}) - 128) * 16777216 + (ord($c{$a + 2}) - 128) * 262144 + (ord($c{$a + 3}) - 128) * 4096 + (ord($c{$a + 4}) - 128) * 64 + (ord($c{$a + 5}) - 128);$a += 6;} else if (ord($c{$a}) >= 254 && ord($c{$a}) <= 255) { //error$ud = false;}$scill .= $prefix.$ud.";";}return $scill;}}/*PHP 轉 ASCIIrequire_once "ascii_class.php";*/$aa = new ascii;echo "<xmp>";echo $str = $aa->encode("eeee");echo "</xmp>";echo $aa->decode($str);?>轉載于:https://my.oschina.net/oneboi/blog/805816
總結
以上是生活随笔為你收集整理的ASCII码与字符串的相互转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeAbstract
- 下一篇: 免抽血!苹果在无创血糖监测技术上取得突破