我得到那些字節來自速度傳感器:如何獲得最重要和最不重要的字節的int/double?
byte[] array = new byte[2];
array[0] = response.getDataPayload()[6];
array[1] = response.getDataPayload()[7];
首先是MSB(最高顯著字節)和第二個LSB(減顯著字節)。我知道這是因爲這就是它在文檔中所描述的...
如何將兩個變量轉換爲int/double? (在C#)
我得到那些字節來自速度傳感器:如何獲得最重要和最不重要的字節的int/double?
byte[] array = new byte[2];
array[0] = response.getDataPayload()[6];
array[1] = response.getDataPayload()[7];
首先是MSB(最高顯著字節)和第二個LSB(減顯著字節)。我知道這是因爲這就是它在文檔中所描述的...
如何將兩個變量轉換爲int/double? (在C#)
如果你需要的所有字節轉換爲正數試試這個:
int value = array[1]*256 + array[0];
也接近但錯了 –
提示,0x0100不是255 –
@BenVoigt是非常迂腐的AdamF建議「嘗試」的代碼,並從未聲稱這是正確的解決方案:) –
有一個內置的叫BitConverter類,它做到了這一點:
byte[] array = new byte[2];
array[0] = response.getDataPayload()[7];
array[1] = response.getDataPayload()[6];
//or, you could do:
array[0] = response.getDataPayload()[6];
array[1] = response.getDataPayLoad()[7];
Array.Reverse(array);
//end-or
short myVar = BitConverter.ToInt16(array, 0);
int myInt = (int)myVar;
double myDouble = (double)myVar;
由於2個字節是一個短的(16位整數),這就是你從傳感器中得到的東西。然後,您可以將其轉換爲完整的32位整數或雙精度,如果需要的話。
字節交換爲字節序。
更好地交換你填寫數組的方式,'BitConverter'是小端。 –
謝謝,糾正。 @BenVoigt –
只是一個味道問題,但對我來說'int myInt =(int)myVar; double myDouble =(double)myVar;'看起來過於明確。我會使用'int myInt = myVar; double myDouble = myVar;'或var myInt =(int)myVar; var myDouble =(double)myVar;'。當然,得到的字節碼是一樣的。 –
使用Convert.ToInt32方法 - https://msdn.microsoft.com/en-us/library/7hk2thbx%28v=vs.110%29.aspx – farukdgn
看看BitConverter類 –
'int result =((( int)array [0])<< 8)|數組[1];'應該做的伎倆。我第一次忘了Or('|')。 –