2010-08-17 4 views
2

이제 하나의 필드 유형이 바이트 배열 인 데이터베이스가 있습니다.그러나 바이트 배열로 메모리를 변환 하시겠습니까?

이제 메모리 나 객체가 있습니다. 이 메모리 조각 또는 개체를 바이트 배열로 변환하여 데이터베이스에 바이트 배열을 저장할 수 있도록하는 방법.

개체가

Foo foo 

메모리가

buf   (actually, don't know how to declare it yet) 

데이터베이스 필드 x'1' 같은 전용 16 진수 값이 필드에 삽입 할 수

byte data[256] 

임하자.

감사합니다.

답변

3

두 가지 방법이 있습니다.

하나는 간단하지만 심각한 제한 사항이 있습니다. Foo 객체의 메모리 이미지를 작성할 수 있습니다. 단점은 컴파일러 나 Foo의 구조를 변경하면 이미지가 더 이상 객체와 일치하지 않으므로 모든 데이터를로드 할 수 없게된다는 것입니다. 이렇게하려면 간단히

&Foo 

을 바이트 배열로 사용하십시오.

다른 방법은 'serialization'입니다. 객체가 으로 변경되었지만 정보를 인코딩하기 위해 많은 공간이 추가 된 경우에 사용할 수 있습니다. 256 바이트 만 가지고 있다면 은주의해야 할 직렬화가 저장하기에 너무 큰 문자열을 생성하지 않아야합니다.

+0

그것은 당신이 경우 도움이 될 수 있습니다 "바이트 시퀀스에 C++ 데이터 구조의 임의의 집합의 가역적 해체를 의미하는.": 문서에서

주조를 보여주세요 ... –

1

부스트는 사용자가 볼 수있는 serialization library입니다. 그러나 생성 된 개체의 크기에주의해야합니다. 작은 클래스 집합으로 만 이것을 수행하는 경우에는 마샬링 및 언 마샬링 함수를 직접 작성하는 것이 좋습니다.

직렬화 "여기, 우리가 용어를 사용"

관련 문제