返回首页
当前位置: Novell迷 > 站长博客 >

C# 以16进制读取文件内容

时间:2014-10-08 21:36来源:本站原创 作者:Novell迷 点击:
最近准备写个QQ四国军棋辅助的小工具,需要读取QQ四国军棋的复盘文件进行分析。 将QQ四国军棋的复盘文件jgs格式的文件使用16进制编辑器打开。 可选的16进制编辑器有UltraEdit , HxD, E

最近准备写个QQ四国军棋辅助的小工具,需要读取QQ四国军棋的复盘文件进行分析。

本文来自Novell迷网站 http://novell.me

将QQ四国军棋的复盘文件jgs格式的文件使用16进制编辑器打开。

本文引用自Novell迷网站

可选的16进制编辑器有UltraEdit , HxD, EmEditor, WinHex ,010Editor 等等,大家可以根据自己习惯以及手头上现有的软件选用。

Novell迷网站原创内容,未经允许,谢绝转载!

如果你都没有,那么本站建议使用HxD,免激活,单文件。本站特地上传了一份: 百度网盘下载

本文转载自http://novell.me

好了,言归正传。我是C#新手,因此找这问题解决办法前必然是百度谷歌一番。不过没有比较满意的答案。搜索比较多的来自CSDN论坛的,但实现起来还挺麻烦的。

版权所有,未经Novell迷允许,不得转载!

最后在youtube找到视频,有个比较简洁的实现办法,使用BinaryReader进行读取,下面具体发一下实现代码:

本文引用自Novell迷网站

  1. private void button1_Click(object sender, EventArgs e) 
  2.         { 
  3.             string filename = "test.jgs";
  4.             BinaryReader br = new BinaryReader(File.OpenRead(filename)); 
  5.             string first_player = string.Empty; 
  6.             br.BaseStream.Position = 0xF;  //0xF  第一个走棋的人所处的位置,00本家,01下家,02对家,03上家 
  7.  
  8.             first_player = br.ReadByte().ToString("X2"); 
  9.             br.Close();          
  10.  
  11.             MessageBox.Show(first_player);             
  12.  
  13.         } 
本文转载自http://novell.me

额外说明一下:ToString("X2") 为C#中的字符串格式控制符。X表示十六进制,2为每次都是两位数。

本文来自Novell迷网站 http://novell.me

比如16进制数  0x0A ,若没有指定输出2位格式,就只会输出0xA 

版权所有,未经Novell迷允许,不得转载!

假设有两个数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迷)
对我有帮助
(4)
66.7%
没什么帮助
(2)
33.3%
------分隔线----------------------------
发表评论
验证码:点击我更换图片
赞助商链接