2012-12-18 27 views
0

我確實有一個字節數組包括一個數字範圍...結合一個字節[]到單個數組

t塊,而不是其餘!

我怎麼能所有塊4-8在Temp[]

+0

你的意思是你有4個字節組成一個'int'? – Rawling

+0

是的,我有4Byte和臨時也需要有4字節,但我使用它的方法只返回我的第1個字節,並跳過其餘的我怎麼能返回我的臨時所有4個字節? –

+0

CMD假設是[493131],但現在它只有49個第一個字節 –

回答

2

元素4-8(或實際上索引3-7)是5個字節。不是4
你有源偏移和計數混合起來:

Buffer.BlockCopy(bResponse, 3, temp, 0, 5); 

現在臨時將包含[23232]

如果你想在最後4個字節,然後使用此:

Buffer.BlockCopy(bResponse, 4, temp, 0, 4); 

現在臨時將包含[3232]
將其轉換爲int:

if (BitConverter.IsLittleEndian) 
    Array.Reverse(temp); 

int i = BitConverter.ToInt32(temp, 0); 

編輯:(您的評論說,[43323232]實際上是後{43, 32, 32, 32}

var firstByte = temp[0]; // This is 43 
var secondByte = temp[1]; // This is 32 
var thirdByte = temp[2]; // 32 
var fourthByte = temp[3]; // 32 

如果你想將其轉換爲int,則BitConverter例子以上仍然有效。

+0

這不是答案!這一個只從緩衝區獲取3個塊如何在一個Temp []中分配這個3? –

+0

每一個都必須單獨閱讀,並在Temp中進行排序,而您的方法只是讀取4字節。我沒有問題的閱讀問題是分配這4在另一個數組我打電話Temp [] –

+0

@Artinos:你讀錯誤的字節數。如果你閱讀[Buffer.BlockCopy](http://msdn.microsoft.com/en-us/library/system.buffer.blockcopy.aspx)的MSDN頁面,你會發現它是你混淆了'source offset'和'count'參數。 –