다른 데이터 형식의 인수를 캐스팅하고 저장하는 제네릭 함수를 vector<char>
에 작성하려고합니다. 캐스팅은 비트 표현이 문자 벡터 내에서 유지된다는 의미입니다. 예를 들어 0x19a4f607
과 같은 4 바이트 int
은 vc[0] = 0x19
, vc[1] = 0xa4
, vc[2] = 0xf6
및 vc[3] = 0x07
으로 벡터에 저장됩니다.다른 유형의 데이터를 벡터 <char>에 저장 하시겠습니까?
여기까지 지금까지 작성한 내용이 있지만 세그먼트 오류가 발생합니다. 어떻게하면이 문제를 해결할 수 있을지 생각해?
template <class T>
void push_T(vector<char>& vc, T n){
char* cp = (char*)&n;
copy(cp, cp+sizeof(T), vc.end());
}
.... 당신이 첫번째 장소에있는 타입 시스템을 전복에 대한 좋은 이유가 가정합니다? 일련 번호를 지정하려고하십니까? –
맞습니다. 어떤 순서로 어떤 데이터를 인코딩했는지 알기 때문에 데이터를 디코딩하는 방법에 대해 걱정할 필요가 없습니다. – Pirooz
char 대신에 unsigned char을 사용하여 주소 조작을 사용하는 것이 좋으며, 서명 된 데이터는 의미가 없습니다. – sarat