您现在的位置是:首页 >动态 > 2022-08-05 23:59:58 来源:
unicode编码与ascii码区别(求ASCII编码(简称A码)和Unicode(简称U码)的区别)
导读 大家好,精选小编来为大家解答以上的问题。unicode编码与ascii码区别,求ASCII编码(简称A码)和Unicode(简称U码)的区别很多人还不知道,现在
大家好,精选小编来为大家解答以上的问题。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”即可汉化!。本文到此结束,希望对大家有所帮助。