我正在使用带有官方以太网屏蔽的 Arduino (duemilanove) 将数据发送到控制器以控制 LED 矩阵。我正在尝试通过获取桌面上 32 位值中的 4 个字节并将其作为 4 个连续字节发送到 arduino 来向控制器发送一些原始的 32 位无符号整数值(unix 时间戳)。但是,当字节值大于 127 时,以太网客户端库返回的值是 63。
以下是我在 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。