2012-04-26 2 views
6

바이트 배열을 int 배열로 변환하고 바이트 배열을 다시 int 배열로 변환하려고합니다. 이 코드 사용 배열 int로 바이트 배열 변환C에서 바이트 배열을 int 배열로 변환하는 중 오류가 발생했습니다.

: int 배열 바이트 배열 변환 할 때

int[] iArray = new int[someSize]; 
byte[] bArray = new byte[iArray.Length * sizeof(int)]; 
Buffer.BlockCopy(iArray, 0,bArray, 0, bArray.Length); // This code works correctly. 

을하지만은 iArray2 배열의 값이 거짓이 때 iArray의 값 배열은 (는 오버 플로우, 내가 모르는 될 수 있습니다.) 256보다 큰

가 어떻게 올바르게 배열을 int로 바이트 배열로 변환 할 수 있습니다

// What is the error in this code?. 
int iArray2 = new int[someSize]; 
Buffer.BlockCopy(bArray, 0, iArray2, 0, iArray2.Length); 
?

+2

바이트는 0에서 255까지의 값을 저장합니다. 예를 들어 1000이라는 정수 값에서 변환 할 때 결과 바이트가 가질 것으로 예상되는 값은 무엇입니까? –

답변

7

Buffer.BlockCopy은 항상 배열 단위가 아니고 바이트 인입니다. 두 번째 BlockCopy() 호출 iArray2.Length을 통과 할 때

따라서, 당신은 복사하는 것을 실제 배열의 1/4입니다 많은 바이트.

+0

괜찮 았어, 어떻게 바이트 배열에서 int 배열로 변환 할 수 있습니까? – HforHisham

+0

@HeshamAbouelsoaod : 올바른 길이 **를 바이트로 ** 전달합니다. – SLaks

+0

괜찮습니다, 고마워요. – HforHisham

관련 문제