encode64 は、26 個の英語の大文字と小文字と数字と 2 つの記号「-_」でエンコードされた最短のデータを取得できます。この文字列は、自動トランスコーディングによって引き起こされる混乱を考慮せずに、ネットワーク上で自由に送信できます。 欠点: 大きな文字列の場合。原因は不明ですが、おそらく PHP スクリプト自体が遅いため、これらの関数がスクリプトに実装されていれば、この問題は発生せず、スクリプトははるかに高速になります。
- //encode64 エンコードは、選択された文字がエンコードされないため、同時に encodeURI、encodeURIComponent、および endode 関数を置き換えることができます。 {
- $ key = 'paawo65gouf7ik2vi9-xq8cftexlcdy1hd3tv0ryzjbpn_blnss4mgrkqwmzjeuh'; 2;$v = 0 ;
- for (; $i < $len; $i += 3) {
- $v = $a[$i - 2] + ($a[$i - 1] << ; 8) + ($ a[$i] <16);
- $s .= $KEY[$v & 0x3f];
- $s .= $KEY[($v >> 6) & 0x3f];
- $s .= $KEY[($v >> 12) & 0x3f];
- $s .= $KEY[($v >> 18)];
- }
- if ($res == 1) {
- $v = $a[$i - 2];
- $s .= $KEY[$v & 0x3f];
- $s .= $KEY[($v >> 6) & 0x3f];
- } else if ($res == 2) {
- $v = $a[$i - 2] + ($a[$i - 1] << 8);
- $s .= $ KEY[$v & 0x3f ];
- $s .= $KEY[($v >> 6) & 0x3f];
- $s .= $KEY[($v >> 12) & 0x3f];
- }
- return $s ;
- }
- function decode($codeStr) {
- $KEY = 'PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh';
- $dic = array();
- for ($i = 0; $i $dic [$KEY[$i]] = $i;
- }
- $len = strlen($codeStr);
- $res = $len % 4;
- $cLen = Floor($len/4) *3;
- if( $res==2) $clen += 1;
- elseif($res==3) $clen += 2;
- $code = range(0,$clen);
- $i = 3 ;$v = 0; $j = 0;
- for (; $i $v = $dic[$codeStr[$i - 3]];
- $v + = $dic[$codeStr [$i - 2]] << 6;
- $v += $dic[$codeStr[$i - 1]] << 12;
- $v += $dic[ $codeStr[$i] ] << 18;
- $code[$j] = $v & 0xff;
- $code[$j+1] = ($v >> 8) & 0xff;
- $ code[$j+2 ] = ($v >> 16) & 0xff;
- $j += 3;
- }
- if ($res == 2) {//正しいバイト数は 2 または1 つではなく 3 つの状況が発生した場合は、それを破棄します。
- $v = $dic[$codeStr[$i - 3]];
- $v += $dic[$codeStr[$i - 2]] << ; 6;
- $code [$j] = $v & 0xff;
- } else if ($res == 3) {
- $v = $dic[$codeStr[$i - 3]];
- $v += $dic[$codeStr[$i - 2]] << 6;
- $v += $dic[$codeStr[$i - 1]] << 12;
- $code[$j] = $ v & 0xff;
- $ code[$j+1] = ($v >> 8) & 0xff;
- }
- return BytesToStr($code);
- }
- }
- function BytesToStr($bytes) {
- $ str = '';
- foreach($bytes as $ch) {
- $str .= chr($ch);
- }
- return iconv('UTF-16BE','utf-8',$str);
- }
- function StrToBytes($str ) {
- $str = iconv('utf-8','UTF-16BE',$str);
- $len = strlen($str);
- $bytes = array();
- の($i=0; $i $bytes[] = ord($str[$i]) ;
- }
- return $bytes;
- }
- ?>
-
-
- コードをコピー
-
-
-
php
|