허프만 코딩을 구현했습니다 (연구 과제 임). 일부 텍스트 문자열을 입력으로 가져오고 "011010 00101 0110 0101 0110 0101 0111 0000 0010 0000 0110 0010 0110 1111 0110 1111 0111 0000 0010 0000 0110 0010 0110 0101 0110"과 같은 결과 문자열을 생성합니다.크기를 줄이기 위해 문자열을 이진 데이터로 변환하는 방법이 있습니까?
string some_text = read_text_file_to_string(text_file);
string coded_string = encode_string(some_text); // coded_string == "011010 00101 0110 0101..."
바이너리 형식으로 coded_string 변환하고 파일에 쓸 수있는 방법이 있습니까? 내 목표는 입력 데이터의 크기를 줄이는 것입니다. 그러나, 파일에 coded_string을 쓰면 파일이 더 커집니다.
std :: bitset를 사용할 수 있습니까? – Niall
일반적으로 전체 바이트가있을 때까지 비트를 누적 한 다음 바이트를 디스크에 씁니다. 다시 읽어 들일 때 한 번에 전체 바이트를 읽고 트리의 리프에 도달했을 때의 현재 비트 그룹에 얼마나 많은 비트가 있는지 파악합니다. 맨 마지막에 전체 바이트를 얻기 위해 일부 패딩을 추가해야 할 수도 있습니다. –
@ 닐, 예, 할 수 있습니다. 그러나 비트 셋을 돕기 위해 데이터 크기를 줄이는 방법을 이해하지 못합니다. – Denis