2012-12-18 3 views
0

바이트 배열에 숫자 범위가 포함되어 있습니다 ...하나의 바이트 []를 단일 배열로 결합

t 나머지는 아니지만 블록!

어떻게 모든 블록 4-8을 Temp[] ??

+0

'int'를 함께 구성하는 4 바이트가 있다는 것을 의미합니까? – Rawling

+0

네, 4Byte가 있고 Temp도 4 바이트가 필요하지만 메서드는 1 바이트 만 리턴하고 나머지는 건너 뛰기 때문에 어떻게 Temp에 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 []에 할당할까요? –

+0

이 각각은 개별적으로 읽어야하고, Temp의 정렬은 다시 4bytes 만 읽는 것입니다. 나는 다른 배열에서이 배열을 할당하는 것이 문제가되지 않는다. Temp [] –

+0

@Artinos : 읽은 바이트 수에 대해 틀렸다. [Buffer.BlockCopy] (http://msdn.microsoft.com/en-us/library/system.buffer.blockcopy.aspx)의 MSDN 페이지를 읽으면 사용자가 'source offset'과'count' 매개 변수를 사용합니다. –