好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > XXencode 編碼,XX編碼介紹、XXencode編碼轉換原理與算法

XXencode 編碼,XX編碼介紹、XXencode編碼轉換原理與算法

熱門標簽:熱血傳奇沃瑪森林地圖標注 南召400電話辦理資費 福建ai電銷機器人加盟公司 地圖標注植物名稱 去哪里辦卡 地圖標注審核工作怎么樣注冊 無錫電銷機器人銷售 招聘信息 揭陽外呼系統公司 鄭州中國移動400電話申請

Xxencode編碼,也是一個二進制字符轉換為普通打印字符方法。跟UUencode編碼原理方法很相似,唯獨不同的是可打印字符不同。通個UUencode編碼,我們知道它有個缺點就是,64個可打印字符中,有很多的特殊字符。而XXencode編碼方法,對64個原字符有做規范。這里它有跟Base64類型了。都有指定可打印字符范圍、及編號。Xxencode編碼在上世紀后期,IBM大型機中得到很廣泛的應用。現在逐漸被Base64編碼轉換方法所取代了。

Xxencode編碼原理

XXencode將輸入文本以每三個字節為單位進行編碼。如果最后剩下的資料少于三個字節,不夠的部份用零補齊。這三個字節共有24個Bit,以6bit為單位分為4個組,每個組以十進制來表示所出現的數值只會落在0到63之間。以所對應值的位置字符代替。它所選擇的可打印字符是:+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64個字符。跟base64打印字符相比,就是uuencode多一個“-” 字符,少一個”/” 字符。 但是,它里面字符順序與Base64完全不一樣。與UUencode比較,這里面所選擇字符,都是常見字符,沒有特殊字符。這也決定它當年流行使用原因!

每60個編碼輸出(相當于45個輸入字節)將輸出為獨立的一行,每行的開頭會加上長度字符,除了最后一行之外,長度字符都應該是“h”這個字符(45,剛好是64字符中,第45位'h'字符),最后一行的長度字符為剩下的字節數目 在64字符中位置所代表字符。

問題:uuencode編碼轉換為xxencode編碼怎么樣操作?

從2中編碼原理來看,幾乎一樣。就是所用的64個字符不一樣。一次,簡單對uuencode轉換后字符,逐位(處理'`'字符)減去32,然后得到一個值。這個值在xxencode 64字符中所對應位置字符替換即可。

XXencode編碼轉換過程

原始字符 C a t
原始ASCII碼(十進制) 67 97 116
ASCII碼(二進制) 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 1 1 0 1 0 0
新的十進制數值 16 54 5 52
編碼后的XXencode字符 E q 3 O
字符串:'Cat‘ 編碼后是:Eq3O

XXencode編碼PHP實現過程

/**
 *xxencode編碼*
 *@author 程默
 *@copyright http://blog.chacuo.net/
 *@param string $src 待處理字符串
 *@return string encode編碼完字符串
 */
function c_xx_encode($src)
{
	//64個可打印字符
	static $base="+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 ///每次讀取3個字節
 $lbyte = 3;
 ////將原始的3個字節轉換為4個字節
 $slen=strlen($src);
 $smod = ($slen%$lbyte);
 $snum = floor($slen/$lbyte);
 
 
 $desc = array();
 
 //將剩下字節以0字節補齊
 $src = $smod===0?$src:$src.str_repeat("\0",$lbyte-$smod);
 $snum = $smod===0?$snum:$snum+1;
 
 for($i=0;$i$snum;$i++)
 {
 ////讀取3個字節
 $_arr = array_map('ord',str_split(substr($src,$i*$lbyte,$lbyte)));
 
 ///計算每一個6位值
 $_dec = array();
 $_dec[]=$_arr[0]>>2;
 $_dec[]=(($_arr[0]3)4)|($_arr[1]>>4);
 $_dec[]=(($_arr[1]0xF)2)|($_arr[2]>>6);
 $_dec[]=$_arr[2]63;
  
 ///求每一位值,在64字符中所對應的字符
 foreach ($_dec as $v)
 {
  $v=$base[$v];
 }
 $desc = array_merge($desc,$_dec);
 }
 

 //每60個編碼輸出(相當于45個輸入字節)將輸出為獨立的一行,每行的開頭會加上長度字符,除了最后一行之外,長度字符都應該是'h'這個ASCII字符(45),最后一行的長度字符為剩下的字節數目,在64字符中對應字符。
 $abyte = 60;
 $crlf = "\r\n";
 $alen = count($desc);
 $anum = floor($alen/$abyte);
 $amod = ($alen%$abyte);
 
 $adesc = array();
 
 for ($i=0;$i$anum;$i++)
 {
 $adesc[]='h'.implode('',array_slice($desc,$i*$abyte,$abyte)).$crlf;
 }
 
 ///截取后面剩余數組長度
 if($amod!==0)
 {
 ///以下計算不滿45字節編碼情況
 $adesc[]=$base[$amod/4*$lbyte+($smod?$smod-$lbyte:$smod)].implode('',array_slice($desc,-$amod)).$crlf;
 }
 
 return implode('',$adesc); 
}

以上代碼從uuencode編碼做簡單修改而來,基本上去掉+32一些地方。知道編碼原理,其實我們很容易實現uuencode->xxencode轉換的

以上轉換后結果,與專業轉換工具一致的。好了,通過學習這類用可打印字符表示二進制字節的編碼方法。我們可以發現很多有趣東西!對應以后我們如果做自己的編碼轉換,可以給我們很多借鑒!歡迎朋友們給出自己的意見!

標簽:黔南 鹽城 桂林 南昌 東莞 景德鎮 文山 宣城

巨人網絡通訊聲明:本文標題《XXencode 編碼,XX編碼介紹、XXencode編碼轉換原理與算法》,本文關鍵詞  XXencode,編碼,介紹,轉換,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《XXencode 編碼,XX編碼介紹、XXencode編碼轉換原理與算法》相關的同類信息!
  • 本頁收集關于XXencode 編碼,XX編碼介紹、XXencode編碼轉換原理與算法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 中国毛片基地| 日本a级作爱片金瓶双艳| 爆?喷水?洗澡?网站| 一本久道久久综合| 女主np高h多p高辣| 52书库全文免费阅读在线| 糖心精品播放| 后进极品美女圆润翘臀| 漂亮邻居美妇沦陷| 国产?欧美?日韩| 99视频精品全国免费| 蜜桃视频一区二区三区四区a?v| 欧美younv极品free| 男女交性拍拍拍高清视频| 婬荡高潮叫床好大好硬18禁| 无忍受的阿?三浦恵理子| 高h肠灌| 宝贝我的是不是大了| 国外精品???网站| H动漫精品3D动漫3D动漫在线| 公和我做爽死我死了A片| 欧美熟妇AV777777白浆| 免费?无码?国产免费软件| 另类亚洲色图| 被粗大的??巴捣出白浆江澄视频| 欧美乱妇无码毛片| 九色91丨PORNY丨丝袜| 亚洲乱码一区二区三区香蕉| 黄色片韩国| 久久久久久久精品妇女影视| 富婆被躁30分钟黑人大战 | 中国人的视频免费播放| 赵丽颖被男人桶到嗷嗷叫爽| 久久久久久69精品久久久学生| 国产91丝袜在线熟女漫画| 全彩调教侵犯H本子全彩4399| 耽bl肉短篇高H| 放荡的女老板bd肉体理发| 99视频精品全部免费观看| 国产精品a?v| 色综合久色AⅤ狼|