求一简单问题!有答案即结帖!
对一个byte[]计算出CRC码后放在一个buffer进行传输,发送的是string类型,所以先把CRC通过System.Text.Encoding.Default.GetString(buffer)转成string类型,问题是接收的常出现3F,在网上查了很久,找到说是一个字节char表示范围小于127,所以计算出来的CRC大于127时就溢出显示3F,我也尝试了以下办法,结果都无法解决,特来求遇到过此类问题的朋友指教! 
 我试了: 
 byte[]   tt=null; 
 tt[0]   =   (byte)buffer[0]; 
 tt[1]   =   (byte)buffer[1]; 
 我想byte类型表示范围是0-255,但是这样写了还是不行 
 我还试了用System.Text.Encoding.UTF8.GetString(buffer),也是不行
------解决方案--------------------用无符号得转一下呢
------解决方案--------------------不是任意二进制数据都可以转为字符串的 
 可以转为16进制字符串 
 用BitConverter.ToString
------解决方案--------------------直接传byte[]  接收后再解码
------解决方案--------------------可以转为16进制字符串 
 用BitConverter.ToString 
------解决方案--------------------建议把byte[]转成base64传输 C#中有现成的函数
------解决方案--------------------to 可能我还没说清楚,我算出的CRC是一个ushort类型 
 __________________________--- 
 费了这么大个劲就是想要个string? 
 str2 =ushort.ToString();//这样不就得了?
------解决方案--------------------其实我就是想知道有什么办法能不溢出,难道只能用byte[]传输才能解决? 
 --------------------------------- 
 这可难办了,C#的定义就是127的。
------解决方案--------------------to 我是要把ushort存为一个2字节数组,因为接收的PLC要的就是一个2字节的CRC码,你这样一个ToString()那全是ASC码 
 _____________________________________ 
 ASC过去后再解成byte不成啊? 
 就算你传字符串,PLC是如何解的解的呢?如果是和写字符串对应的解法,那么我认为那本身就是错的.否则你肯定是自己转编码