解决方案 »

  1.   


    不能用Ascii转要么用GB2312 要么UTF8
    转码一般是中文字符吧。
      

  2.   

    你得转成ansi的才行,如果打印机支持unicode的话,就转成这个
      

  3.   

    如果你想转成string的话,那么你的byte[]里的值,也要是从string里转过来,并且string转化成byte[] 和byte[]转换成string,要用同样的encoding。直接放在byte[]里面的两个值,这么转是转不过来的。
      

  4.   

    我用            byte[] bytHeadOfBag = new Byte[2] { 0xff, 0xef };           //包开始标识
                string strHeadOfBag = Convert.ToString(bytHeadOfBag[0]) + Convert.ToString(bytHeadOfBag[1]);
    显示出来的是0xff  0xef  的16进制的值,并不是它本身 我用的是同样encoding的  
                byte[] bytHeadOfBag = new Byte[2] { 0xff, 0xef };           //包开始标识
                string strHeadOfBag = Convert.ToString(bytHeadOfBag[0]) + Convert.ToString(bytHeadOfBag[1]);
    这样的结果把 strHeadOfBag 打印出来是255239
      

  5.   

    你这两个字byte应该是文件签名吧。看你的变量名也像是某头标记
    如果你那个是从文本文件记取的话,按下面这个表,你应该使用UTF-16 Little Endian编码方式进行读写转换
    Encoding Representation 
    UTF-8 EF BB BF 
    UTF-16 Big Endian FE FF 
    UTF-16 Little Endian FF FE 
    UTF-32 Big Endian 00 00 FE FF 
    UTF-32 Little Endian FF FE 00 00
      

  6.   

    数据包是数据包,你不能把它整个当成字符串,而应该先代码去判断,解析,拆分,把里面是字符串的部分转字符串,不是字符串的部分就应该对应的去处理,而不是统一按字符串处理
    假如包里有连续4个字节表示一个int,你转成字符串之后变成啥了??
      

  7.   

    如果你需要TCP拆包器可以参考.
    http://blog.csdn.net/daonidedie/article/details/30712087
      

  8.   

    我是想字符串能够加起来当做一个整体包,如果都是byte[]型,那怎么打包呢?
      

  9.   

    我是想字符串能够加起来当做一个整体包,如果都是byte[]型,那怎么打包呢?
    不明白你所谓"打包"是什么概念
    你能不能先理解什么是数据包,然后再去想你自己的"打包"方法?
      

  10.   

    非常感谢哦   懂了不少,我也去百度了解了下数据包的定义。
    是这样的:这个数据协议里面的各个标识有byte型的也有string型的,最后数据包通过串口或者网络发送出去是byte[]型,拼包我觉得有两种方式,1.先都转换成string型,拼包,再转换成byte[]发送出去;2.直接把string标识都转换成byte[],拼包发送;我(甲方)做的是发送端。数据包解析是乙方,接收数据。
      

  11.   

    数据包在网络中传输,本来就都是二进制的,不存在字符串
    所以发送函数也只接受byte数组(二进制流)你应该将所有数据都分别转byte数组然后拼接数组
    而不是都转string
    因为很多数据类型都没法转成string的
    比如我前面举的例子,4个byte表示一个int
    假如是1,那么也应该表示为0x00,0x00,0x00,0x01
    你转成"1",再转回来还是4个byte吗