首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

问一个字符串和字节数组转换的有关问题,有代码

2012-08-14 
问一个字符串和字节数组转换的问题,有代码!在线等一个字节数组通过getstring转换成字符串,然后再通过getby

问一个字符串和字节数组转换的问题,有代码!在线等
一个字节数组通过getstring转换成字符串,然后再通过getbytes转换回来的时候值就变了,这是什么情况呢?

测试大部分数据时没问题的,测试到这一组的时候出现问题...

  Dim b() As Byte = New Byte(3) {&HF0, &HD8, &H42, 0}

  Dim str As String = System.Text.Encoding.Unicode.GetString(b)

  Dim a() As Byte = System.Text.Encoding.Unicode.GetBytes(str)

[解决办法]
你通过将字节数组当作Unicode编码来将其处理为字符串,但是&HF0, &HD8落入uft-16代理区及私人使用区,转换为字符串的时候变成乱码,.net自作聪明又丢失了原始&HF0, &HD8信息,修改成了字符串的一个方框,编码为&HFD,&HFF。你就返回不了原始数据了。

通过 system.text.encoding.ascii 也是不行的,ascii自定义了7位,你的是8位,用
 System.Text.Encoding.GetEncoding("gb2312").GetString 倒是可以转换。

总的来说,这个设计是有问题的,字节数组转换为字符串有可能丢失信息,是个bug隐患,如果是为了便于字节数组的传输,可以用base64编码

热点排行