关于string和byte之间的转换

来源:互联网 发布:淘宝网品牌女裤 编辑:程序博客网 时间:2024/05/17 01:41

http://blog.sina.com.cn/s/blog_70bf579801017yc2.html

在网络编程中,Socket发送数据是以byte字节数组发送的,所以要把其他类型的数据转化成byte[]类型

 

//string 转成 byte

string s = "Hello!!";

byte[] b = new byte[1024*1024];

b = System.Text.Encoding.ASCII.GetBytes(s);

   //当string含有中文字符时用 System.Text.Encoding.UTF8.GetBytes(s);

sock.Send(b);

 

//byte 转成 string

byte[] b1 = new byte[1024*1024*2];

sock.Receive(b1); 

string s1 = System.Text.Encoding.ASCII.GetString(b1);

   // System.Text.Encoding.UTF8.GetString(b1);

  注意:

    在把byte数组转换成string的时候,由于byte数组有2M的字节,所以转换后得到的字符串s1也会填充到2M的字符(用\0来填充)

所以,为了避免这个问题,可以使用Receive返回的字节数来确定接收到byte的长度

    int length = sock.Receive(b1);

    string s1 = System.Text.Encoding.ASCII.GetString(b1, 0, length);

          //这样,s1就为byte实际的值

0 0
原创粉丝点击