说明:尽信书不如无书,网上的东西本来就是精华糟粕都有的,下面这篇文章是我在做二进制数据流读取时参考的一篇文章,怎么做都有错误,不知道是哪里的问题,以为是自己的逻辑问题检查了很多遍,在自己静下心来想想的时候才发现,原来自己犯了多么严重的错误,英文的半角字符就是ASCII的那128个,这里的意思就是GBK把英文半角的128个字符放在了首部,显然文章中提示给了我应该是最起始的128个字符,而我却不知其根本而按照错误的0-0x40去判定单字节的英文字符,128显然它的编码应该是:0x00-0x80这是对自己的一次教训,也一次记录下来勉励以后。------正确结论:在读取二进制字节流的时候常常会出现乱码,这是因为同一个流中会有半角英文字符和除此以外其他的字符如中文字符。显然他们所占的字节数是不同的,在逐个读取的过程中,如何区分开来这些编码从而用不同的方式提取是一个大问题,这是我写的一个字符提取输出代码段。从其中能够看出窍门。我们可以把一位的英文字母提取出之后,对其余的中文全角字符做两位一提取两位一输出。,即可得到解析的正确结果。
for (l = 0; l <k-1; l++) {//这里的帧校验字段用的2位
c = (int)recData[l];
nCheck=checkCRC(nCheck, c);
if (recData[l]!=(byte)0x00) {//填充字节0x00
nCount--;
if (recData[l]>0 && recData[l]<0x80) {