我正在使用Arduino(duemilanove)和官方以太网屏蔽层向控制器发送数据以控制LED矩阵。我试图通过在桌面上的32位值中的4个字节发送一些原始的32位无符号整型值(unix时间戳)给控制器,并将它作为4个连续字节发送给arduino。但是,只要字节值大于127,以太网客户端库的返回值就是63.Arduino以太网字节大小问题
以下是我在arduino方面所做的一个基本示例。有些东西已被删除整洁。
byte buffer[32];
memset(buffer, 0, 32);
int data;
int i=0;
data = client.read();
while(data != -1 && i < 32)
{
buffer[i++] = (byte)data;
data = client.read();
}
因此,只要输入字节大于127,变量“data”将最终设置为63!起初我认为问题还在后面(缓冲区是字符而不是字节),但是当我在读取后立即打印出“数据”时,它仍然是63.
任何想法可能导致这种情况?我知道client.read()应该输出int并在内部从套接字读取数据作为uint8_t这是一个完整的字节和无符号,所以我应该能够至少去255 ...
编辑:对,你是汉斯。没有意识到Encoding.ASCII.GetBytes只支持前7位而不是全部8.
UTF-8编码不会给一个63 ...做一个63也会产生63出?随后的字节是否完全移动。 – 2011-01-07 05:26:13