大家好,精選小編來為大家解答以上的問題。unicode編碼與ascii碼區別,求ASCII編碼(簡稱A碼)和Unicode(簡稱U碼)的區別很多人還不知道,現在讓我們一起來看看吧!

大家都知道u碼軟件的字符串會以十六進制開,帶點“.”要分開陳列!比如U碼軟件中單詞About的字符串,十六進制打開時會以'開頭。答.乙.o .u .“t.”這種形式是分開的,而軟件的代碼串不是“.”分開來說,比如A碼軟件中的About這個詞,十六進制打開會直接顯示,U碼中的字符,不管是英文還是中文,一個字符占兩個字節。比如code U軟件中字母A的十六進制碼是4100(41是一個字節,00是另一個字節)~而code A軟件中的字母只需要一個字符就可以占據一個字節。比如A碼軟件中字母A的十六進制碼是41,大家舉例,如果你想把About這個詞中文化,用十六進制打開,按option-find -ASCII-輸入“About”,就會找到一個結果。看字符串大概41626F757417,前面有兩個字節,是0505。這兩個音節‘0505’是A碼的索引,用來表示字符串的長度和字符數。它們是十六進制的。前面05表示這個字符串有五個字符(簡單來說就是五個字母),后面05表示這個字符串由五個字節組成(一個碼,一個漢字和字母都占一個字節,U碼字母占一個字節,漢字占兩個字節)。對于英文字符,有效字符和字符串長度是一樣的,但是翻譯成中文就不一樣了。我們不得不用中文Unicode字符替換,因為只有Unicode字符才能正常顯示中文。但是我們不能直接用“約”這個u碼代碼來代替。使用中文代碼需要一個標識符。該標識符以0F開頭(表示后面的內容是Unicode代碼),以E0結尾(E0表示以后是ASCII代碼)。其實只要有0F,有時候你用U碼還剩下一個字節就不夠用了,只好用E0代替。~比如把' about '的一個碼的字符串' 050541626F757417 '改成中文U碼,那么' About '的字符串就是' 02050F51734E8E '(其實在中文A碼中,我一般是先把指數后面的字符串改成中文碼,再根據修改后的碼修改指數)。在這個字符串中,02表示有兩個。05表示還有5個字節被占用,0F表示后面的字節是U碼,5173是“關”字的U碼(小端,簡單來說就是兩個字節要反過來,你找到的“關”的Unicode碼是7351,會反過來),4E8E是“于”字的U碼(小端,記得把兩個字節反過來再舉個例子,讓大家更形象地學習和使用0F和E0的變化以及索引。現在我們需要英文可視化工具,找到它的A碼字符串代碼是' 0A0A56697375616C697A6572 '。這個字符串的指數是0A0A,表示這個字符串有十個有效字符,占用十個字節(十六進制中,指數表示的字節數只用十六個字符表示,即0~9和A ~ F。
也就是說,指數的十六進制代碼01~09代表數字1~9,0A~0F代表數字10~15,10代表數字16,以此類推。1A代表數字26,也就是說,如果字符串占據26個字節,那么索引的代碼就是1A)。把這個英文單詞“interface”翻譯成中文(它的U碼的代碼是4C756297),你可以比如把它固定為' 060A 0F754C9762E0202020 ',其中第一個06代表六個有效的字符串:即兩個字符的U碼(記住endian字節順序是顛倒的)=0F75和9762,四個空格的A碼=20202020(因為如果只翻譯成兩個中文,剩下的代碼應該是這四個字節前面的E0已經表示后面的碼是A碼,所以一定是20的小端碼0020而不是2000),而第二個0A表示這組字符串占用了十個字節。你可以算一下,這些代碼0F754C9762E020202020正好占用十個字節(請區分清楚代碼0F和E0也占用字節)!但是,漢字的字符串不是一成不變的,我們必須學習和靈活使用,知道如何寫不同的字符,才能更適合。你可以把上面的中文代碼寫成‘040 a 0 f 754 c 976200200020 E0’或者‘050 a 0754 c 9762002020 e 02020’甚至‘060 a 0e 202020’然后保存的文件就可以翻譯成中文了。接下來,我要講一講字符串傳遞的過程,這是一段代碼本地化經常涉及到的。我們知道需要翻譯成中文A碼的代碼必須轉換成U碼,但是遇到一些短的英文字符串(比如Ok)怎么辦?如果直接換成u碼,肯定是字節不夠。我該怎么辦?那是借用,就是借用一個有很多字節的字符串!比如中文軟件中英文版的Play,Play的A碼字符串代碼是‘0404506 c 6179’。如果要翻譯成中文版的' play '(這兩個中文u碼的十六進制碼分別是AD64和3E65),顯然不可能直接用u碼串來代替,因為Play只有四個有效字節,而' Play '的u碼占了四個。這時候我們需要從本地化附近的字符串中借用多出來的字節的字符串!我們從玩耍這個詞中學習符串向上找找不到有多余的字符串,于是向下找,到位置150這里,看看當時原英文將Visualizer漢化成“界面”這個詞的字符串,很明顯,Visualizer的十個字節漢化成“界面”這個詞只需五個字節即可完成(兩個U碼字符占用四個字節,還有一個字節是0F的U碼標識符),剩下的五個字節符用空格和E0來填補太浪費了吧?我們現在需要的就是多出的五個字節了,從Play的字符串開始(盡量記下字符串的位置,這里是121)到已經漢化成"界面"的字符串結束(位置是162),我們得到的代碼是""0404506C6179170000FFFFFFFF000000000600000009F0F60800000000040A0F754C972600200020E0",這段代碼分三組,第一組“0404506C6179”是Play的A碼字符串~第二組“170000FFFFFFFF000000000600000009F0F60800000000”是系統的代碼你不能修改,否則會打不開軟件~第三組“040A0F754C972600200020E0”是已經漢化成"界面"的字符串,第一組不夠用第三組卻多了就得問第三組借幾個字節,但是手機又不能將字節直接剪切到相對應的位置,那么我們就需要通過移動字節的位置來達到剪切的目的,只要將以上那段字符串修改為"02050F64AD653E170000FFFFFFFF000000000600000009F0F6080000000004090F754C972600200020"即可,這樣的移動代碼即可以讓第一組向第三組“借”到了一個字節,記得要將指數修改為相對應的有效字符數和占用字節數喔!只要你掌握得好,指數和字節都沒寫錯,那些字節就可以讓你隨心所欲地移動了,但是記得不要修改系統代碼喔!有時可能會涉及移動幾組的代碼才能漢化,大家要善于運用。??漢化A碼的工作真的很煩瑣,建議大家用十六進制打開字符文件后,從上至下慢慢一個一個地漢化,記得要多還少補~對了,還有一種無最大長度的字符串,比如“Stopping”是“0853544F5050494E47”~換成中文的Unicode的“停止”是“080F505C6B620020E0”即可漢化!。
本文到此結束,希望對大家有所幫助。