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的问题吗?
...全文
75 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

110,571

社区成员

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

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

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