我正在使用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