string strMsgHead = new string(new byte[] { 48, -50, -108, -50, -98, -61, -122, -61, -87, 48 }, "UTF-8");Java是可以编译通过的,C#不行,byte不能带-号。谁能帮我翻译成C#?

解决方案 »

  1.   

    string strMsgHead = new string() {48, -50, -108, -50, -98, -61, -122, -61, -87, 48 }
      

  2.   

    byte[] byteArray = new byte[] { 48, 255 + (-50), 255 + (-108), 255 + (-50), 255 + (-98), 255 + (-61), 255 + (-122), 255 + (-61), 255 + (-87), 48 };
                string strMsgHead = BitConverter.ToString(byteArray);
                MessageBox.Show(strMsgHead);
      

  3.   

    C#用 sbyte 表示有符号的8位整数。
      

  4.   

    sbyte[] byteArray = new sbyte[] { 48, -50, -108, -50, -98, -61, -122, -61, -87, 48 };
      

  5.   

    方法上面的都说了,下面说下原因。
    java的byte是带符号的,范围是-128~+127和C#中的sbyte一样而C#中的byte范围是0~255.
      

  6.   

    另外,如果要把负的 sbyte 转换为 byte,应该是加 256,而不是 255。