編碼目的
字首或特點
編碼形式
常見或特殊記憶
url編碼
對ascii中的一些可列印字元進行編碼
字首%以%為字首,其後是字元的兩16進製制的ascii碼
%20空格 %00空位元組 %25百分號 +也代表url的空格
html編碼
為在html文件中安全的使用某些字元
&或或後跟字元10進製的ascii碼,為字首,後跟字元的16進製制的ascii碼
"為"或"或" >為》 《為<
uuencode編碼
將二進位制檔案轉換為文字檔案,便於純文字email傳輸
只有可列印字串,從10進製ascii碼33-96,即明顯沒有小寫字母中括號等
16進製制編碼
對二進位制資料進行16進製制編碼
base64
對二進位制資料進行編碼,用來將非ascii字元的資料轉換成ascii字元
末尾經常出現=
大寫字母az,小寫字母az,數字0~9以及"+","/"及用來填充的=
base32
對二進位制資料進行編碼,用來將非ascii字元的資料轉換成ascii字元
末尾經常出現=
大寫字母az和數字27及用來填充的=
base16
對二進位制資料進行編碼,用來將非ascii字元的資料轉換成ascii字元
數字09和字母af
unicode
對世界所有的字元編碼
u+用四個位元組為每個字元進行編碼,一般用16進製制字元表示
utf8
把unicode字元進行編碼,便於儲存傳輸的編碼方式
%使用一至四個位元組為每個字元編碼
utf16
把unicode字元進行編碼,便於儲存傳輸的編碼方式
%u使用二或四個位元組為每個字元編碼
utf32
把unicode字元進行編碼,便於儲存傳輸的編碼方式
%u使用四個位元組為每個字元編碼
ascii碼
對鍵盤的128個字元編碼
使用7位二進位制數來表示所有的大寫和小寫字母,數字0 到9、標點符號,以及在美式英語中使用的特殊控制字元
gbk對中文字元編碼
使用兩個位元組編碼
bcd碼
對二進位制資料進行編碼
用4位二進位制數來表示一位十進位制數中的0~9十個數碼,有8421碼,2421碼,餘3迴圈碼等方式
quoted-printable編碼
=每乙個8位位元組編碼為乙個=號後跟兩個十六位數,根url編碼差不多,只不過字首為=
敲擊碼對26個英文本母編碼
將26個字母放在5*5的矩陣中(k和c放在一起),比如用(1,1)代表a,(1,5)代表e
摩爾斯電碼
. -用. -的不同組合順序表示字母,數字,標點符號,並用停頓區分單詞,句子
非歸零編碼nre——高低電平分別用0和1表示
曼徹斯特編碼——從高電平跳到低電平表示0,從低電平跳到高電平表示1
差分曼徹斯特編碼——每一位中間有跳變,用來表示時鐘,每一位開始時有跳變表示0,無表示1
用於壓縮,***編碼等
簡單的二元霍夫曼編碼過程如下
所以e的編碼為1,c的編碼為01,f的編碼為000,h的編碼為001
簡單的二元費諾編碼過程如下,不斷分為概率相近的兩組
用於衛星,醫學影象等的編碼,利用遊程,例如影象畫素為
3333
4333
2211
1111
灰度:3,4,3,2,1,1
長度:4,1,3,2,2,4
灰度用兩位,長度用兩位為1011,1100,1010,0101,0001,0011
增加一位奇(偶)校驗位並一起儲存或傳送
比如:1111000中1位偶數新增一位為0表示1的位數為偶數,變為11110000,如果傳輸過程中發生了錯誤變為10110000,那麼就可以知道有一位發生了錯誤。如果偶數個位錯誤,是無法發現的
乙個k位的二進位制資料,左移r位,除以乙個給定的r+1位的多項式相除,得到的r位餘數就為校驗碼,拼到k位的二進位制數後面
只要將接受到的資料和校驗位用約定好的同樣的生成多項式除,如果能除盡,表明沒有發生錯誤(不一定,也有可能錯誤);若除不盡,則表明某些資料位發生了錯誤
如資訊碼為1100,生成多項式為\(x^+x+1\)
則1100平移3位1100000 除以1011,餘數為010,拼在1100後面為1100010
能夠糾正一位錯誤或者檢測兩位錯誤並糾一正位錯誤
設資訊碼為k位,校驗碼為r位,海明碼為k+r位
如果能夠糾正一位錯則應滿足\(2^-1\geq k+r\)
如果能夠發現兩位錯並糾正一位錯則應滿足\(2^\geq k+r\)
編碼規律為
例如求01101110的海明碼,使其能糾正一位錯誤
一 確定校驗位數
\(2^-1\geq 8+4\) 所以r為4
二 確定校驗位所在位置
\(2^\),\(2^\),\(2^\),\(2^\)所以海明碼的1,2,4,8為校驗位
三 分組
四 確定校驗位
每一組除本身校驗位外,所有位異或,如第一組為\(_ \oplus_ \oplus_ \oplus_ \oplus_=\)
四個校驗碼分別為1101,所以海明碼為110011011110
五 校驗
將每一組與本組的校驗位異或,即\(_ \oplus_ \oplus_ \oplus_ \oplus_ \oplus_\),如果校驗位都為0,則無錯,如果有錯,校驗位二進位制編碼即為出錯位號,如,如果校驗位為1010,則第第10位錯,即\(_\)出錯
總結的編碼規範
1 巨集定義格式 每個單詞用下劃線隔開。示例 define yyy 20 define yyy 20 各用兩個 tab隔開 2 一律不得出現常量,對於出現的常量 指數字和字串 用意義明顯的巨集定義 或列舉變數 代替。3 每個函式體不能過長,原則上不超過 200行 4 每個檔案不能過長,原則上不超過 ...
1090 簡單編碼
簡單編碼 time limit 1000ms memory limit 65536k total submit 164 accepted 65 description 最近kingly對編碼很感興趣,於是從網上找了一些編碼原則來對字串做實驗。因為kingly一直很忙,所以希望你這位程式設計高手來替他...
簡單編碼 sdut oj
time limit 1000ms memory limit 65536kb problem description 將一串文字譯成密碼,密碼的規律是 將原來的小寫字母全部翻譯成大寫字母,大寫字母全部翻譯成小寫字母,數字的翻譯規律如下 0 9 1 8 2 7 3 6 4 5 5 4 6 3 7 2 ...