標籤:style color 使用 os 資料 io
- cmd的len就是真實的len,而不需要/2了;
- timer的定時任務,start並不執行,只有在第一個interval時間過後才會第一次執行;
- paddLeft的使用:"Jim",使用padLeft(5,‘0‘)之後,就是00Jim;
- bit(位)是傳輸單位,二進位的0、1;Byte(位元組)是最小的資料存放區單位;1Byte = 8Bit;一個英文字母、數字、半形標點都是1Byte(位元組);在傳遞命令中,路徑就是
1)Encoding.UTF8.GetBytes(cuseeion),將文字轉換為位元組;
2)就每一個位元組轉換為16進位
StringBuilder sb = newStringBuilder(data.Length * 3);
foreach (byte b in data)
????sb.Append(Convert.ToString(b, 16).PadLeft(2, ‘0‘));
return sb.ToString().ToUpper();
3)將
- 使用ByteArrayToHexString(bb.ToByteArray())的方法,可以獲得最終傳輸到命令伺服器的內容(00002715XXX);對於協議中描述的"FFFF0A000000000001014D025B"而言,其實已經是經過16進位編碼的,所以對於把這部分壓入到ByteBuffer,直接用HexStringToByteArray(" FFFF0A000000000001014D025B")即可;
- 將字串轉換為byte[]其實是對字串的char進行ASCII編碼(基於10進位編碼),在ByteArrayToHexString中因為採用了16進位進行編碼,這就有問題:兩位的十進位位元組可能一位16進位位元組即可,於是採用PadLeft進行補位處理,這也是我們看到的在協議中定義的比如MAC地址32位(位元組,或者說字母數字),但是其實是64位長,就是在轉成byte[]轉16進位的時候,固定做兩位長度。
- Socket對象中的SendTimeout和ReceiveTimeout預設值是0,代表無線等待;有的時候我們可以通過設定逾時時間來判定操作的成功與否