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

关于byte【】 转string 的有关问题啊求解

2013-09-05 
关于byte【】 转string的问题啊,求解啊byte[] buf {9,10,20,10,9,8,8,5,4,190,255}string str nullstr

关于byte【】 转string 的问题啊,求解啊

            
byte[] buf= {9,10,20,10,9,8,8,5,4,190,255};
string str = null;
              str = System.Text.Encoding.Default.GetString(buf, 0, 11);
            byte[] temp = System.Text.Encoding.Default.GetBytes(str);



问题:为什么我把byte【】里的数转换成string时,打印str时每次结尾都是? 的字符在终端下,

当我把str重新转换成byte【】时 最后一个值变调了255 变成了? 16进制的3f 


ps我现在的工作主要的想把 client.recv()回来的字符转化成字符串类型的,可是现在字符串的结尾值会变调。现在该怎么办呢,亲、、、、、、、、、、、、、、、 string
[解决办法]
buf 接收的字符串是什么?
[解决办法]
你们两方的编码要统一,最好别用Encoding.Default,是byte还是char,他们的范围是不一样的
[解决办法]
你是想把字符数组转化为字符串,那你测试的怎么用字节数组的,改成char[]数组测试下
[解决办法]
引用:
Quote: 引用:

你是想把字符数组转化为字符串,那你测试的怎么用字节数组的,改成char[]数组测试下


我知道是byte 长度不够,但是我们的client.recv()这里不是字节流吗,没办法,客户端发过来的是16进制的编码,有的都是大于ansicc里编码的最大的7f 这个范围,所以造成字符串不显示!

长度不够可以分开来接收的,统一编码是才是重点!
[解决办法]
这里是你用错了编码,必须用UTF8而不能是ASCII编码,Default编码就是ASCII编码,而ASCII编码是7位的字节,从 U+0000 到 U+007F,因此在转换到字符串的时候就丢失了第8位的数据,再转回来自然不正确了。
正确的做法是:
byte[] buf= {9,10,20,10,9,8,8,5,4,190,255};
string str = null;
str = System.Text.Encoding.UTF8.GetString(buf, 0, 11);
byte[] temp = System.Text.Encoding.UTF8.GetBytes(str);

[解决办法]
引用:
Quote: 引用:

你是想把字符数组转化为字符串,那你测试的怎么用字节数组的,改成char[]数组测试下


我知道是byte 长度不够,但是我们的client.recv()这里不是字节流吗,没办法,客户端发过来的是16进制的编码,有的都是大于ansicc里编码的最大的7f 这个范围,所以造成字符串不显示!


参考这个例子:http://code.msdn.microsoft.com/CSHexStringByteArrayConvert-a80e955d

热点排行