当前位置: 代码迷 >> .NET Framework >> C#读二进制转换的有关问题
  详细解决方案

C#读二进制转换的有关问题

热度:55   发布时间:2016-05-01 23:35:45.0
C#读二进制转换的问题
在写一个游戏编辑工具,遇到一个问题。
通过BinaryReader读入流,在使用ToInt32转换操作时,读取其中一个字节时会变成读取到8个字节,实际只有4个字节,导致读取出来的数据不对,请问如何修正这个问题呢?
文字表达有限,可能不是很明确,上代码吧。

            FileStream file = new FileStream("0001.dat", FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader((Stream)file);
            byte[] bytes = new byte[file.Length];
            br.Read(bytes, 0, (int)file.Length);
            file.Close();
            br.Close();
            questid.Text = BitConverter.ToInt32(bytes, 0).ToString();
            questnpc.Text = BitConverter.ToInt32(bytes, 2).ToString();
            textBox3.Text = BitConverter.ToInt32(bytes, 4).ToString();
            textBox4.Text = BitConverter.ToInt32(bytes, 80).ToString();
            textBox5.Text = BitConverter.ToInt32(bytes, 84).ToString();
            textBox6.Text = BitConverter.ToInt32(bytes, 88).ToString();

0001.dat文件内容如下

00000000h: 02 00 00 00 FF 03 00 00 00 04 00 00 FF FF FF FF ; ....?.......????
00000010h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000020h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000030h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000040h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000050h: 96 00 00 00 E8 03 00 00 58 02 00 00 00 00 00 00 ; ?..?..X.......
00000060h: 04 00 00 00 01 00 00 00 68 C8 00 00 06 00 00 00 ; ........h?.....
00000070h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000080h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000090h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
000000a0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
000000b0h: FF FF FF FF FF FF FF FF FF FF FF FF 12 00 AE F5 ; ????????????..?
000000c0h: B2 F6 B9 EE AA 76 C0 F8 B0 D3 BF D5 A5 A7 B6 F0 ; 馋诡獀励坝空ェ娥
000000d0h: 00 00 FF FF FF FF FF FF FF FF FF FE FF FF FF FF ; ..?????????????
000000e0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
000000f0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000100h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000110h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000120h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 ; ??????????????..
00000130h: 00 00 FF FF FF FF FF FF FF FF FF FE FF FF FF FF ; ..?????????????
00000140h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000150h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000160h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000170h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000180h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 ; ??????????????..
  相关解决方案