Quartett!的二进制脚本分析 - 编程入门网
ze
160. lastLineNum = lineNum;
161. lastTokenType = tokenType;
162. } // for
163. }
164. }
165. }
166.
167. static bool Equals( byte[ ] a, byte[ ] b ) {
168. int len = a.Length;
169. if ( len != b.Length ) return false;
170. for ( int i = 0; i < len; i++ ) {
171. if ( a[ i ] != b[ i ] ) return false;
172. }
173. return true;
174. }
175.
176. static string ReadCString( BinaryReader reader ) {
177. StringBuilder builder = new StringBuilder( );
178. char c = ''\0'';
179.
180. while ( ( c = reader.ReadChar( ) ) != ''\0'' ) {
181. builder.Append( c );
182. }
183.
184. return builder.ToString( );
185. }
186. }
187.}
Quartett!的二进制脚本分析(5)时间:2011-10-28 javaeye RednaxelaFX中间有些代码是为了插入缩进的,忽略那部分吧…… 得到的脚本看起来像是这样: Java代码 1.2.3.4.5.6.7.8.9.10.11.#base_path "../"12.13.14.15.16.17.18.19.20.21.#includ e "Script/BaseInstruction.txt"22.23.24.25.26.27.28.2 9.30.31.motion Main ( ) 中间是有很多空行没错。那些原本应该是有注释的地方,或者本身就是空行(为了让代码好看)。这 里我只是把原始脚本的状态尽量复原了出来而已。 暂时来说,这样就够用了。这个脚本处理已经让我们能做很多事。要进一步做的话,我可以把文法分 析也做出来,方便对脚本更仔细的分析。但这两天肯定是没时间做那种事情咯…… Until then... P.S. 上述代码皆以BSD许可证的形式发布。请有兴趣的人在遵循BSD许可证的前提下自由使用这些代码 。 P.S.S. 其实上面代码值得吐槽的地方N多。例如说我完全没使用try-catch语句来处理可能出现的异常 ,又例如我在第一份代码里把一个Queue转变成数组再做相等性比较(极其恶心,本来自己写个循环数组 就解决了)。……这些都是所谓的“原型代码”,目标是尽可能快的写出代码来验证自己的一些设想是否 正确。偷懒不加异常处理、宁可别扭的使用标准库里的容器也不自己封装一个,都是出于同一原因。看倌 们请多多包涵这些地方 XD P.S.S.S. 唉,不过我偷懒也真是过分了。后一份代码里居然没把BinaryWriter改回用StreamWriter… … |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |