二进制转换为字符串,字符串再还原回原来的二进制?

zxcayumi 2010-10-24 12:13:21
byte[] bytes1 = new byte[] { 0xDF };
string sd = System.Text.Encoding.Encoding.Default.GetString(bytes);

byte[] bytes2 = Encoding.Default.GetBytes(sd);

现在想把二进制转换为string;
然后再将string类型的变量转换回原始的二进制(bytes1)

但是现在GetString之后,再GetBytes,最初的bytes1与后来的bytes2内容不一致,请问如何处理?
...全文
304 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
卓才琣 2010-10-24
  • 打赏
  • 举报
回复
如果你是使用中文版的操作系统,默认字符集是GB2312编码的,单字节被误认为是ASCII码,但是你给的值却不再ASCII码的范围内,参考一下

http://baike.baidu.com/view/25492.htm
yudeli 2010-10-24
  • 打赏
  • 举报
回复
学习。。。
  • 打赏
  • 举报
回复
不要轻易地做所谓转换,任何轻易转换(比如以为任意byte[]都等于正规的unicode字符串)就会损失信息,所以你了解其原理才应该转换。
  • 打赏
  • 举报
回复
[Quote=引用楼主 zxcayumi 的回复:]
byte[] bytes1 = new byte[] { 0xDF };
string sd = System.Text.Encoding.Encoding.Default.GetString(bytes);

byte[] bytes2 = Encoding.Default.GetBytes(sd);

现在想把二进制转换为string;
然后再将string类型的变量转换回原始的二……
[/Quote]

字符串有它自己的原则,因此当你将byte[]使用这种方式转为string,就会丢失信息。

要正确地序列化byte[],可以使用

System.Convert.ToBase64String
System.Convert.FromBase64String
wuyq11 2010-10-24
  • 打赏
  • 举报
回复
byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );
sstring str = System.Text.Encoding.Default.GetString ( byteArray );
BitConverter.GetBytes

110,538

社区成员

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

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

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