C#  将字符串按Big Endian字节顺序的UTF-8编码将字符串转换成byte数组,数组的前两个字节描述的是后续字节数组的长度,代码怎么写?

解决方案 »

  1.   

    使用Encoding.UTF8.GetBytes转换成byte数组,数组本身有长度,为何还要保存到前两个字节?如果数组是一个比较大的长度为long型的数组,两个字节也放不下啊。
      

  2.   

    byte[] bs=Encoding.UTF8.GetBytes(text);
    long bsl=bs.Length;
    byte[] hd=Convert.ToBytes(bsl);
    byte[] res==new byte[bsl+8];
    Array.Copy(hd,0,res,0,8);
    Array.Copy(bs,0,res,8,bsl);res 就是了。
    上边的代码写的很繁琐,是为了你能看明白。其实很多代码可以写在一起的。也不用声明那么多变量。
    不过我这里不是前2字节存长度,而是换了一个long, 如果你确定长度只要两字节就够了,那你换成short  int16也可以
      

  3.   

    string s = "aaaaa";
    BinaryWriter.write(s);
    用BinaryWriter.write方法写到文本时,回自动在前面加上后续字节数..用UE打开文本就看的到
      

  4.   

    byteArry = System.Text.Encoding.Default.GetBytes(aa);