byte[] bdata={0xEA,0x2A,0x00,0xD6,0x42,0x22,0xD7,0x54,0xF0,0x04,0x81,0x00,0xD6,0x6C,0x75,0x6A};
char[] buffer=new char[16];
buffer=Encoding.ASCII.GetChars(bdata);
我是按照上面这样做的。但是调试的时候,发现结果buffer里面的数据有的就不是对应的字符,转换后对应的十进制数如下所示
0xEA,0x2A,0x00,0xD6,0x42,0x22,0xD7,0x54,0xF0,0x04,0x81,0x00,0xD6,0x6C,0x75,0x6A
63, 42, 0, 63, 66, 34, 63, 84, 63, 4, 63, 0, 63, 108,117,106发现凡是变成63的全是错的,其他的是对的,请问正确的代码应该如何写?谁知道的麻烦告诉我。
char[] buffer=new char[16];
buffer=Encoding.ASCII.GetChars(bdata);
我是按照上面这样做的。但是调试的时候,发现结果buffer里面的数据有的就不是对应的字符,转换后对应的十进制数如下所示
0xEA,0x2A,0x00,0xD6,0x42,0x22,0xD7,0x54,0xF0,0x04,0x81,0x00,0xD6,0x6C,0x75,0x6A
63, 42, 0, 63, 66, 34, 63, 84, 63, 4, 63, 0, 63, 108,117,106发现凡是变成63的全是错的,其他的是对的,请问正确的代码应该如何写?谁知道的麻烦告诉我。
你就要用什么方式还原回去~
比如A和B 约定0x11是 你好 A和C约定0x11 是 大家好那么当A收到0x11的时候
必须知道是什么约定
1. 遍历赋值 buffer[i]=(char)bdata[i]
2. 串口取数据不要用ReadByte,可以是ReadChar、Read等都可以
第二个办法我觉得我读取的数据是二进制数据,应该是用ReadByte按字节读取的,用ReadChar是从缓冲区中一次读取一个字符,貌似也不行。
直接赋值就可以了:buffer[i]=(char)bdata[i]。至于ReadChar应该可以,别拘泥于字符、字节的区别,char也可以用来存放整数。