byte[] bytHeadOfBag = new Byte[2] { 0xff, 0xef }; 把bytHeadOfBag 转换成string strHeadOfBag = System.Text.Encoding.ASCII.GetString(bytHeadOfBag); 输出来是乱码的 如下图:
//System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("gb2312");
byte[] bytHeadOfBag = new Byte[2] { 0xff, 0xef }; //包开始标识
// string strHeadOfBag = Convert.ToString(bytHeadOfBag);
string strHeadOfBag = System.Text.Encoding.ASCII.GetString(bytHeadOfBag);
//string strHeadOfBag = System.Text.Encoding.Default.GetString(bytHeadOfBag);
//string strHeadOfBag = encoding.GetString(bytHeadOfBag);
试了好几种方法都是这样,求高手指教
------解决思路----------------------
不能用Ascii转要么用GB2312 要么UTF8
转码一般是中文字符吧。
------解决思路----------------------
你得转成ansi的才行,如果打印机支持unicode的话,就转成这个
------解决思路----------------------
试试 Default
------解决思路----------------------
如果你想转成string的话,那么你的byte[]里的值,也要是从string里转过来,并且string转化成byte[] 和byte[]转换成string,要用同样的encoding。
直接放在byte[]里面的两个值,这么转是转不过来的。
------解决思路----------------------
你这两个字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
------解决思路----------------------
既然是包开始标识,那么它本身就不是字符,你应该直接按16进制比较,而不是转成字符串
假如我告诉你包开始以5个0x00表示,你转完保证都是空字符串\0
------解决思路----------------------
你需要的实际编码是什么?
------解决思路----------------------
数据包是数据包,你不能把它整个当成字符串,而应该先代码去判断,解析,拆分,把里面是字符串的部分转字符串,不是字符串的部分就应该对应的去处理,而不是统一按字符串处理
假如包里有连续4个字节表示一个int,你转成字符串之后变成啥了??
------解决思路----------------------
FFEF好像没有对应的字符串...
------解决思路----------------------
如果你需要TCP拆包器可以参考.
http://blog.csdn.net/daonidedie/article/details/30712087
------解决思路----------------------
不明白你所谓"打包"是什么概念
你能不能先理解什么是数据包,然后再去想你自己的"打包"方法?
------解决思路----------------------
你完全可以将多个字符串拼接到一个包里,但是你不要老想把数据包直接整个解析成一个字符串
------解决思路----------------------
数据包的概念如果你不理解,我就给你举个通俗易懂的例子:
快递包裹你总知道吧
你可以把牙膏牙刷生活用品都放到一个包裹里,但是你不要拿到一个包裹就把它整个当成某一种用品来用
比如包裹里可以有衣服,也可能有别的.
你应该先把包裹拆开,然后把衣服拿出来,再扔进洗衣机
而不是把包裹整个扔进洗衣机
------解决思路----------------------
数据包在网络中传输,本来就都是二进制的,不存在字符串
所以发送函数也只接受byte数组(二进制流)
你应该将所有数据都分别转byte数组然后拼接数组
而不是都转string
因为很多数据类型都没法转成string的
比如我前面举的例子,4个byte表示一个int
假如是1,那么也应该表示为0x00,0x00,0x00,0x01
你转成"1",再转回来还是4个byte吗