2012-06-18 1 views
0

저는 보통 C에서 작동하지만, 이제 C++에서 데이터를 압축하고 압축을 풀 때 유용합니다. 그런 다음 char 배열에 내 압축 데이터가 있습니다. 마찬가지로 :16 진수 represetantion에서 이진 데이터를 가진 char *에서 streamstring을로드하는 방법?

strg[40] = "400000000200000002000200000000ffffff80"; 

거기에서이 배열이 나타내는 이진 데이터로 stringstream 변수를로드해야합니다. 누군가 내가 제발 도와 줄 수 있니?

+1

문자열의 데이터가 문자열 스트림의 의미에 어떤 영향을 줍니까? 그들은 둘 다 같은 (불투명 한) 문자열을 표현하지 않을까요? – Cameron

+1

한 번에 한 바이트 씩 두 자리를 모두 한 바이트 (예 : 조회 테이블을 통해)로 변환 할 수 있습니다. –

+2

이것은 좋은 압축 라이브러리처럼 들리지 않습니다 :) –

답변

2

Kerrek 님의 의견입니다.

std::ostringstream ss; 
const char *p = strg; 
if (p) while (*p) { 
    unsigned char x = hex2int(*p) << 4; 
    if (*++p) x |= hex2int(*p++); 
    ss << x; 
} 

그러나 이것은 입력 스트림의 빅 엔디안 표현을 가정합니다. 입력 스트림이 실제로 리틀 엔디안 표현을 사용하는 멀티 바이트 단어를 나타내는 경우 변환을 변경해야합니다.