제목이 문제를 설명하고 있기를 바랍니다. 누구든지 더 좋은 아이디어가 있다면 그것을 바꿀 것입니다.구조체에서 이진 블록 만들기
I 이런 구조체로 정보를 저장하고있어 :
struct AnyStruct
{
AnyStruct() :
testInt(20),
testDouble(100.01),
testBool1(true),
testBool2(false),
testBool3(true),
testChar('x') {}
int testInt;
double testDouble;
bool testBool1;
bool testBool2;
bool testBool3;
char testChar;
std::vector<char> getBinaryBlock()
{
//how to build that?
}
}
구조체는 다음과 같은 구조의 바이너리 바이트 버퍼에 네트워크를 통해 전송되어야
이 따르면
Bit 00- 31: testInt
Bit 32- 61: testDouble most significant portion
Bit 62- 93: testDouble least significant portion
Bit 94: testBool1
Bit 95: testBool2
Bit 96: testBool3
Bit 97-104: testChar
정의 결과 std :: vector는 13 바이트 (char == byte)의 크기를 가져야합니다.
이제는 다른 데이터 유형에서 이러한 패킷을 어떻게 구성 할 수 있을지 궁금합니다. 이미 많은 페이지를 읽고 std :: bitset 또는 boost :: dynamic_bitset과 같은 데이터 유형을 찾았지만 어느 것도 내 문제를 해결하지 못하는 것 같습니다.
나는 위의 코드가 단지 예일 뿐이며, 원래의 표준은 훨씬 더 복잡하고 더 많은 다른 데이터 유형을 포함한다는 것을 알기 쉽다고 생각합니다. 위의 예제를 해결하면 복잡한 구조에 대한 제 문제가 해결 될 것입니다.
마지막 점 : 문제는 내가 생각하는 단지 STL 또는 부스트 (
제가 알 수있는 한, 이것은 일반적으로 직렬화에 관한 것입니다. 데이터 형식을 직렬화 할 수있는 방법을 이해합니다. 문제는 주어진 데이터 유형을 바이너리 형식으로 변환하여 바이너리 컨테이너의 올바른 위치에 추가하는 것입니다. 다음 질문은 내가 어떻게 std :: string 또는 std :: vector을 생성 할 수 있는가입니다. –
MOnsDaR