导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

c#中和vb中读二进制文件到字符串,帮忙看一下。

alien54155415 2003-12-15 06:27:52
vb中 Open "C:\1.exe" For Binary As #1
filelen = LOF(1)
str1 = Space$(filelen)
Get #1, , strContent
c#中
FileStream fs=new FileStream("c:\\1.exe",FileMode.Open);
byte[] MyData= new byte[fs.Length];
fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
string strContent = System.Text.Encoding.Default.GetString(MyData);
为什么同一个文件读出来的strContent不同呢?如果换成txt文件,则相同。
是Encoding的问题吗?
...全文
15 点赞 收藏 17
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bankliu 2003-12-25
好像得不到相同的结果,如果你用utf-8得到的结果一样,那么gb3的ASCII码可能在vb和c#略有不同,不过这个不同不会影响读出的真正字符串和汉字的效果的.
回复
alien54155415 2003-12-18
to bankliu;
那个是我把它写到文件,再用ue打开,粘出来的。关键是vb和c#里的结果不一样。是否C#中修改某些参数,就可以得到相同的结果呢?
回复
alien54155415 2003-12-17
先结了只好。那位还有线索,可以留言。
回复
bankliu 2003-12-17
搂主阿,exe文件里当然不都是字符串了,你看
vb的:
MZ ÿÿ @ ? ???L?This program cannot be run in DOS mode.
C#的
MZ  @ ? ???L?This program cannot be run in DOS mode.
其中This program cannot be run in DOS mode.就是字符串阿,其他的不是的,况且这种读法不叫做2进制,是16进制的
回复
bankliu 2003-12-16
System.Text.Encoding.Default.GetString(MyData);
换成
System.Text.Encoding.GetEncoding("gb2312").GetString(MyData);
参见我的问题:
http://expert.csdn.net/Expert/topic/2539/2539409.xml?temp=.1281549
回复
海峰 2003-12-16
顶!是一种美德!
回复
dibov 2003-12-16
帮你顶
回复
alien54155415 2003-12-16
再顶
回复
kandyasp 2003-12-16
帮你顶
回复
alien54155415 2003-12-16
自己顶
回复
alien54155415 2003-12-16
那在c#中怎样得到和vb中一样的字符串呢?
回复
alien54155415 2003-12-16
这位兄台,你随便找个exe文件试一下看看。
我帖一下第一行
vb的:
MZ ÿÿ @ ? ???L?This program cannot be run in DOS mode.
C#的
MZ  @ ? ???L?This program cannot be run in DOS mode.



回复
zhsu 2003-12-16
楼主能不能吧两个不同的读出结果贴出来看看啊。
回复
alien54155415 2003-12-16
最后顶一下
回复
alien54155415 2003-12-16
bankliu,你的方法对exe文件好像不行。帮忙看一下。
回复
速马 2003-12-15
应该就是Encoding的问题
回复
alien54155415 2003-12-15
ought to be:
vb中 Open "C:\1.exe" For Binary As #1
filelen = LOF(1)
strContent = Space$(filelen)
Get #1, , strContent
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.