用Python读的文件数据,在C里是char*,在C#成了string,但是C的好处就是char*就是原始的8位的数据;但是string转成byte[]却必须选一种编码方式,结果原来的数据就变得乱七八糟。选ASCII比如0xFC就变成了63,怎么才能使0xFC在byte[]里就是0xFC呢?

解决方案 »

  1.   

    用unicode转就是0xFC
    byte []byt=System.Text.Encoding.Unicode.GetBytes(str);
      

  2.   

    它们的二进制编码完全相反
    63:   0011 1111
    0xFC:  1111 1100
    如果是通过网络传输的,那么会有个字节顺序(大端与小端)的问题
    采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,32bit宽的数0x12345678的存放方式如下
    http://blog.chinaunix.net/uid-21372424-id-119781.html解决办法:传输端或接收端按字节转换成同一种标准,可用IPAddress.NetworkToHostOrder()
      

  3.   

    搞定。
                char[] CharArray = s.ToCharArray();
                byte[] ByteArray = new byte[CharArray.Length];
                for (int i = 0; i < CharArray.Length; i++)
                {
                    ByteArray[i] = Convert.ToByte(CharArray[i]);
                }