关于string与byte转换的问题

ares1986 2013-07-09 04:08:28
我现在有个文件格式的结构是字符串和二进制数据组成,
现在是我要解析该文件,我是直接把该文件用字符串的形式读取到内存,
再进行解析,目前遇到的问题是那部分二进制数据由字符串转换不过去了,
我使用的Encoding里面的GetBytes函数,但是出来的数据和文件中实际的数据不对,
请问如何解决?是不是在读取字符串的时候数据已经被处理了啊,所以还原不过去?
...全文
194 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ares1986 2013-07-10
  • 打赏
  • 举报
回复
不是编码的问题,是因为那部分二进制数据并不是字符串,在当使用字符串方式读取后,再获取字符串的二进制数据,获取到的数据就和原始数据不一样了, 目前我就直接使用二进制读取所有的数据,然后在逐个byte解析,只能这样了
effun 2013-07-10
  • 打赏
  • 举报
回复
你是要从二进制转换成字符串吧,那就不应该用GetBytes,而应该用GetString,当然,还得选择正确的编码,如果不知道原来的编码是什么,就一个一个试吧,如果是中文一般来说不是Utf8就是GB2312。
sbnth 2013-07-09
  • 打赏
  • 举报
回复
你应该直接读取二进制数据,再解析每个byte...
Suriyel 2013-07-09
  • 打赏
  • 举报
回复
Encoding几种编码都试试
人生导师 2013-07-09
  • 打赏
  • 举报
回复
这个应该是编码问题吧,使用Encoding.Unicode看看
苍穹无痕 2013-07-09
  • 打赏
  • 举报
回复
感觉好像有点像3G短信读取的问题,可以通过特定的移位来解决该问题,当然移位的格式要清楚。
ares1986 2013-07-09
  • 打赏
  • 举报
回复
Encoding 选对了,我用其他查看16进制文件的软件看了,编码是对的
ooo7880000 2013-07-09
  • 打赏
  • 举报
回复
字符串转二进制,如果是字母啊,数字一类的字符串,一般用ascall码表对照着看看有没有转错,先把二进制转换成10进制在里面找就行了。(单字节) 如果是汉字,就有很多种编码了,比如GB2321,utf8等。(双字节)
Sharpend 2013-07-09
  • 打赏
  • 举报
回复
会不会是 Encoding选的不对....读的时候,也可以指定编码的...
benbenRH 2013-07-09
  • 打赏
  • 举报
回复
先以二进制的格式读取出来,然后把字符串部分的转换为字符串,二进制的数据就不要转了!

110,534

社区成员

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

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

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