2013-02-26 2 views
7

바이트 배열을 SQLiteDatabase에 저장하는 응용 프로그램을 만들었습니다. 이 응용 프로그램은 또한 데이터베이스에서 'x'초마다 바이트 배열을 선택합니다.1 바이트 []을 여러 바이트 []로 채우기

내가 채울 어떻게 한 바이트 : - ->의 SQLiteDatabase> 응용 프로그램

내 질문은

응용 프로그램 : 내 응용 프로그램의

흐름은 다음과 같다 배열은 SQLiteDatabase 들어오는 모든 바이트 배열? 예를 들어

:

Byte[] Data; 

는 다음 바이트 어레이로 채워질 필요가있다 :

Byte[] IncomingData; 

IncomingData 끊임없이 의해 채워진을위한 SQLiteDatabase되고있다.

데이터 수신 데이터으로 계속 입력해야합니다.

누군가 나를 도울 수 있습니까?

+0

"채우기"란 무엇을 의미합니까? 그들을 연결하고 싶니? – usr

+0

예, 예를 들어 문자열의 경우 다음과 같습니다 : string str1 = "12"; string str2 = "13"; 1213, 내 바이트 배열에서 똑같은 것이 필요합니다. – Max

+1

왜 바이트 목록을 사용하지 않는 것이 좋을까요? – James

답변

4

그냥 Concat를 사용

data1.Concat(IncomingData); 

당신은 System.Linq 네임 스페이스 참조를 추가해야합니다.

+0

"data1"을 입력하면 System.Linq를 추가했습니다. intelli 감각은 Concat와 함께 나를 도울 것이다. 그러나 그것은 중괄호 안에 삽입되어야하는 것을 "<>"필요로한다. – Max

+0

+1 메모리 스트림과 모든 것을 생각하고 있었음 – Liam

+1

@mobstaa 참고 용으로 <>은 지정된 제네릭 유형 – Liam

4

몇 가지 방법을 사용할 수 있습니다.

  1. List로 이동 가능하면 수동으로 세 가지의

, 그것은 (가능성이) 줄일 수로 List<byte>List.AddRange

  • 사용 LINQ의 Enumerable.Concat
  • 사용 Array.Copy를 사용하여 모든 것을 할 배열 복사의 양. 이것은 List의 구성이며, 어떤 배경으로 배열 capacity을 사용하며, 4에서 시작하여 용량에 도달하면 두 배가됩니다. 용량은 심지어 list.Capacity 속성 또는 배열로 할 수있는 것처럼 많이 int 걸리는 생성자로 큰 숫자로 설정할 수 있습니다. List.ToArray을 사용하여 언제든지 목록을 가져올 수 있습니다.

    Enumerable.Concat은 최소 크기의 배열 만 만들 것입니다. 즉, byte을 추가 할 때마다 새 배열을 만들어야합니다.

  • +0

    왜 목록으로 변환하는 오버 헤드가 있습니까? 말했듯이, 그들은 어쨌든 백그라운드에서 배열을 사용합니다. – mattytommo

    +0

    사실 그것은'AsArray'가 아니라'ToArray'입니다. – juharr

    +0

    .Concat은 많은 양의 복사가 발생하는 경우 항상 두 개에서 새로운 배열을 생성합니다. 목록은 용량으로 초기화 될 수 있으며 그 용량에 도달하면 목록이 복사됩니다. 예, ToArray. –

    관련 문제