S40【汉化】游戏教程第三章:十六进制汉化

楼主: Cry&小殇 浏览: 3556 回复: 23 发布于: 2011-12-17 20:23:00
废话不多讲!!!直奔主题。先来了解什么是十六进制。
英文名称:Hex numbersystem,是计算机中数据的一种表示方法,为什么需要八进制和十六进制?编程中,我们常用的还是10进制……毕竟C/C++是高级语言。比如: int a = 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。但是二进制数太长了,比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100 ,面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢? 2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。同我们日常中的十进制表示法不一样,十六进制是以16作为基数的计数系统,用数字0~9和字母a~f(或其大写AF)表示10到15 (A=10、B=11、C=12、D=13、E=14、F=15) 。先讲我们经常用到的十进制,从0数到9,到第10个数时进1是10,再跟上数11、12…十进制几岁小孩都懂!呵~ 而16进制也一样,我们从0数到1、2、3…A、B…F,数到F时(也就是第16个数时)进一是10,跟着数11、12、13…18、19、1A、1B…这样数下去,逢16进一!下面有一个例题问题:(199)用10进制转16进制是多少?答案:C7使用“除16取余”方法,199除以16,得12余7,余为第一个数(右数起),12=C为第二个数,因此是C7,懂了吗?试试转换5621,5621除16=商351余5,取余5作为第一个数,351除16 = 商21余15,取余15=F作为第二个数,21除16 = 商1余5,取余5作为第三个数,商1小于16,不用再除了,取其作为第四个数,因此5621转换成16进制结果为15F5。再试试3599,3599除16= 商224余15,取余15=F作为第一个数,224除16 = 商14余0,取余0作为第二个数,商14小于16,取其作为第三个数,因此结果为E0F。如果觉得麻烦可以使用软件进行转换,方便快捷准确。16进制可以表示各种语言,比如英语A = 41 、B = 42、C = 43、D = 44……a = 61、b = 62、c =63、d = 64……中文需要3个字节组合,我们 = e68891 e4bbac、汉化 = e6b189 e58c96。这些就不是能算出来的,就需借助工具来转换!
开始教程;汉化工具CECE使用教程。首先用UC下载游戏,打开MC将游戏解压至新文件夹(具体参照第一章:class汉化),退出MC.注意这里,一般多语言游戏的语言包存在lang或txt文件夹下(自己对应找找,3D空战在txt文件夹下)打开文件夹可以看到所有的语言都在这几以txt格式存放我们选择英语来汉化用class editor打开语言包,我们可以按一下“0”健把屏幕切换为十六进制显示模式,好了,看到右边窗口有个MAIN MENU了吧,左边有一个09,意思是这个英文单词后有九个有效字符(听不懂的没关系,后文会有解释)那么也就是说MAIN MENU里由九组十六进制代码组成,你会问我,那要怎么样才能把它转换成中文主菜单呢?不急,你先按“5”键打开软件操作菜单,选择搜索转换看到了吗?你只要在字符那一栏输入“主菜单”再按下“转换”就能得到该字符的十六进制码与十进制码,把这些代码抄出来,两位一组超出来,刚好九组,回到十六进制页面,把09以后的九组十六进制分别以按“5”“十六进制”的方式替换上你转换得来的那九组代码,好了,这个主菜单就汉化完了…我们继续往下…下一个是“STAR”,十六进制为05开头,闷,转换的时候出问题了吧,“STAR”的中文意思“开始”转换后有六组字符!而原来的就五组不够换。诶。先不说汉化…我们来回忆下破解游戏过程中,这个sms:/ /后加10086的破解方法吧,再加完10086以后是不是要把sms前那个点到十六进制,改成0B?不然会出现应用软件错误,对吧,我们解释下这个原理,十六进制,一看就知道有十六个字符对吧,从0到9后面的A=10B=11C=12D=13E=14F=15从0到15共十六种数字,明白了吧,那么破解游戏时,原来那个点是“06”意思是点后有6个有效字符,sms:/ /。那么加入10086这五个字符以后,就有十一个字符了,B代表11,你改成0B就表示其后包含11个有效字符。也就是sms:/ /10086,明白了吧?好我们回到汉化课程!同样的道理,我们把05改成06,然后在后面插入字符写一个一吧,你看是不是多了一个31?好了,把31和原来的五位数换成你转换得出的六组十六进制码吧!好的,我们先保存看看效果,按“左软健”选保存恩,再用minicommander打包替换,安装游戏…ok了吗?看完之后有疑惑吧!其实十六进制不难理解,只要仔细想想,推敲推敲就理解了!(补充:1-9分别为01到09,10到15为A0,B0,C0,D0,E0,F0,既然是十六进制就是为16进,16为10,17为11,依此类推。)
回复 🤍 0 📤 分享 收藏

回复 (23)

顶!!!!
楼主是转的吗?很深奥…
艾网里也只有少数人懂得十六进制…
这是我把两篇贴子综合在一起。前部分是蓝色汉化组的一个汉化高手写的,后截即是S40的汉化教程,我做了些修改!
其实如果只汉化游戏的话,对十六进制只要了解他的意思就行,不用深度了解!因为这个还是蛮深奥的~
站里只有十种人,懂二进制和不懂二进制的
高二的时候我们学计算机的HTTP网页设计,没事的时候也学进制数,挺简单的,这东西一学就会~呵呵
顶!楼主太棒了!
二进制太麻烦……十六还得算……
那么多class我们先进哪个?
楼主,第一章在哪?
我帮你回答,在JAVA、塞班游戏专区,点精华。
谢谢!我找到了!我刚才进入class里面,乱码都有很多的长方条吗?还发现里面有很多相同的东西!如(Ljava/lang/string;)这个东西有好几个!其他也一样!
这第三章个人认为是汉化其它格式文本的,汉化class参照第一章。话说楼主可能忘记这个帖子
你会不会汉化,你介绍一下!
只会一点而已
那你知不知道为什么,乱码里有很多一样的英文??
那个不要乱改哦,会错误的!
嘿嘿,这我发现了,顺便问一下,打开class后,那些有/都可以不管他,还有,只有前面显示有几位有效字符的,才能修改!
先把class学好吧…
加载更多回复

发表回复