最近准备写个QQ四国军棋辅助的小工具,需要读取QQ四国军棋的复盘文件进行分析。
将QQ四国军棋的复盘文件jgs格式的文件使用16进制编辑器打开。
可选的16进制编辑器有UltraEdit , HxD, EmEditor, WinHex ,010Editor 等等,大家可以根据自己习惯以及手头上现有的软件选用。
如果你都没有,那么本站建议使用HxD,免激活,单文件。本站特地上传了一份: 百度网盘下载
本文转载自http://novell.me
好了,言归正传。我是C#新手,因此找这问题解决办法前必然是百度谷歌一番。不过没有比较满意的答案。搜索比较多的来自CSDN论坛的,但实现起来还挺麻烦的。
最后在youtube找到视频,有个比较简洁的实现办法,使用BinaryReader进行读取,下面具体发一下实现代码:
- private void button1_Click(object sender, EventArgs e)
- {
- string filename = "test.jgs";
- BinaryReader br = new BinaryReader(File.OpenRead(filename));
- string first_player = string.Empty;
- br.BaseStream.Position = 0xF; //0xF 第一个走棋的人所处的位置,00本家,01下家,02对家,03上家
- first_player = br.ReadByte().ToString("X2");
- br.Close();
- MessageBox.Show(first_player);
- }
本文转载自http://novell.me
额外说明一下:ToString("X2") 为C#中的字符串格式控制符。X表示十六进制,2为每次都是两位数。
比如16进制数 0x0A ,若没有指定输出2位格式,就只会输出0xA
假设有两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,可以指定"X2",这样显示出来就是:0x0A、0x1A。
内容来自Novell迷网站
如果要读取多位,那么就利用循环,将这个position进行循环。 本文引用自http://novell.me
另外还要说明的是,16进制只是我们常见的编辑器为了好看,将内容显示为16进制而已。同时上面代码实际上BinaryReader也是直接读出来的2进制,是我们在程序中利用ToString()将内容格式化成了16进制而已。 http://Novell.Me
转载请注明出处!本文地址 http://novell.me/master-diary/2014-10-08/csharp-dotnet-read-hex-data.html
(责任编辑:Novell迷)