读取DAT的文件问题!

headsonlkc 2010-10-21 12:03:32
07 E0 0B 35 07 E0 0B 35 07 E0 0B 35 07 E0 0B 35 07 E0 0B 35 EC EF EC EF EC EF EC EF EC EF 66 66 66 66 66 A6 77 B5 58 A9 D4 2E 20 2E A6 CC A7 C6 A8 C8 A4 40 A9 77 B7 7C A6 75 C5 40 B5 DB A7 DA AD CC AA BA A1 41 AE F8 B7 C0 AD DF A4 FD AA BA B8 F4 C1 D9 AB DC AA F8 A1 41 A7 DA AD CC A4 40 B0 5F A5 5B AA 6F A7 61 A1 49 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

内容可能是以下的这个:

安琪拉..米希亚一定会守护着我们的,消灭冥王的路还是很长,我们一起加油吧!

现在问题就不知道如何读取成汉字,我用过

public class Big5toGB2312
{

[DllImport("kernel32.dll", EntryPoint = "LCMapStringA")]

public static extern int LCMapString(int Locale, int dwMapFlags, byte[] lpSrcStr, int cchSrc, byte[] lpDestStr, int cchDest);

const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000;

const int LCMAP_TRADITIONAL_CHINESE = 0x04000000;



public static String ConvertString(String lines)
{

Encoding gb2312 = Encoding.GetEncoding(936);

byte[] src = gb2312.GetBytes(lines);

byte[] dest = new byte[src.Length];

LCMapString(0x0804, LCMAP_SIMPLIFIED_CHINESE, src, -1, dest, src.Length);

return gb2312.GetString(dest);

}

}
读出来是乱码,有人帮帮手吗?
分是成功后再加的
...全文
197 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jshi123 2010-10-21
  • 打赏
  • 举报
回复
big5编码,前面有一段是乱码

string s = "07 E0 0B 35 07 E0 0B 35 07 E0 0B 35 07 E0 0B 35 07 E0 0B 35 EC EF EC EF EC EF EC EF EC EF 66 66 66 66 66 A6 77 B5 58 A9 D4 2E 20 2E A6 CC A7 C6 A8 C8 A4 40 A9 77 B7 7C A6 75 C5 40 B5 DB A7 DA AD CC AA BA A1 41 AE F8 B7 C0 AD DF A4 FD AA BA B8 F4 C1 D9 AB DC AA F8 A1 41 A7 DA AD CC A4 40 B0 5F A5 5B AA 6F A7 61 A1 49 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00";
var buf = s.Split().Select(i => Convert.ToByte(i, 16));
string r = Encoding.GetEncoding("big5").GetString(buf.ToArray());
headsonlkc 2010-10-21
  • 打赏
  • 举报
回复
结贴,谢谢!
最后的方法我用这种
byte[] chinaStr = new byte[254];
Array.Copy(desBytes, i+35, chinaStr, 0, chinaStr.Length);
listBox1.Items.Add(Encoding.GetEncoding("big5").GetString(chinaStr));
Application.DoEvents();
lhy 2010-10-21
  • 打赏
  • 举报
回复
dat文件都是自定义格式的,很难分析
最开始重复5次07 E0 0B 35,肯定不是文字,去掉,然后重复5次EC EF,重复5次66,这些都要去掉
jshi123 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 headsonlkc 的回复:]

还有,这里的i是什么意思?
[/Quote]
i代表按空格分割字符串后的每个子串,也就是“07”,“E0”这些数据

看下msdn的linq和lambda表达式
wuyq11 2010-10-21
  • 打赏
  • 举报
回复
Lamada语法
FileStream fs = new FileStream(@"", FileMode.Open);读取dat
jshi123 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 headsonlkc 的回复:]

能分析出前面的是什么来的吗?会不会是序号什么的
[/Quote]
这个怎么可能?
headsonlkc 2010-10-21
  • 打赏
  • 举报
回复
还有,这里的i是什么意思?
headsonlkc 2010-10-21
  • 打赏
  • 举报
回复
能分析出前面的是什么来的吗?会不会是序号什么的

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧