2013-03-07 6 views
0

바이너리 모드 [8 비트 또는 12 비트]로 파일에 저장할 때 문자가 차지하는 공간은 어느 정도입니까? sizeof Wiki article : 나는 오래 다음 얼마나 많은 공간이 거 당신이 필요한 좋은 돕는 도구가 3 비트 [101] 또는 8 비트 [00000101]바이너리 파일에 데이터 저장

답변

1

플랫폼에 long()을 저장하는 데 필요한 바이트 수를 복사합니다. 숫자를 나타내는 데 필요한 비트 만 복사하면 데이터를 읽을 때 해석 할 방법이 없습니다.

그러나 코드에서 문자열로 복사하고 있습니다. 그래서 이진수가 아닌 문자 (아마도 ASCII) 표현이 저장 될 것입니다.

1

을 [5 말] 저장하는 경우도

fprintf(f,"%ld",ch); 

인용구 : 단항 연산자를 sizeof 모든 데이터 유형의 크기를 계산하는 데 사용되는 프로그래밍 언어 C 및 C++에서,

, BYT의 수로 측정 유형을 나타내는 데 필요한 es. 이 컨텍스트의 바이트는 부호없는 char과 동일하며 흔하지는 않지만 8 비트보다 클 수 있습니다. sizeof의 결과는 앞에 오는 표현식 또는 괄호로 묶인 유형 지정자 유형의 크기이며 일반적으로 size_t로 표시되는 부호없는 정수 유형을가집니다. sizeof는 정수 및 부동 소수점 유형, 포인터 유형 또는 복합 데이터 유형 (공용체, 구조체 또는 C++ 클래스)과 같은 기본 유형을 비롯하여 모든 데이터 유형에 적용 할 수 있습니다. 그래서 기본적으로

: 당신이 많은 바이트 뭔가를 사용하는 방법을 알고 싶다면, 바로 를 sizeof를 사용합니다.

수주의 그러나 : 포인터, 실제로 포인터에 있지만 (배열 등) 다르게 사용되는 다른 요소에만 바이트 포인터의 크기 ... 아니 구조 포인터 점을 보여 ! 그리고 포인터를 저장하는 것은 매우 제한적입니다. 다음에 사용할 객체가 메모리의 다른 위치에있을 수 있습니다.

+0

의 배수와 I는 당황했다대로 파일에 하나의 비트를 저장하지 않습니다로 point [length> = 2]를 인덱스 번호로 대체해야하는 지점. 그래서 "ls"[16 bits]를 "25s [its index]라고 말하면"ls "를 대체 한 후이 256이 얼마나 많은 공간을 차지하게 될까요? and how?] – adil

4
fprintf(f,"%ld",...) 

은 숫자를 10 진수로 변환하고 log_10 (ch) 바이트를 저장합니다. fwrite과 함께 저장할 때 지정한만큼의 바이트가 소요됩니다.

fwrite (buffer , 1 , sizeof(buffer) , f) 

또한주의 읽기 쓰기 ACESS는 바이트 단위이므로 항상 실제로 내가 LZ 압축 방식을 구현 한 8

+0

45 바이트로 구성된 예제 입력 파일, ASCII 텍스트 문자열은/rain/in/Spain/falls/mostly/on/the/plain입니다. LZW 알고리즘이 입력 파일에서 문자 "a"를 읽는다면, 우리는이 값이 01100001 (97 비트는 8 비트로 표현됨)을 읽는다는 것을 의미합니다. 97은 ASCII에서 "a"입니다. 인코딩 된 파일에 문자 "a"를 씁니다. 000001100001 (97 비트는 12 비트로 표현됨)을 씁니다. [link] (http://www.dspguide.com/ch27/5)에서이 내용을 읽었습니다.htm) 그래서 어떻게 데이터가 항상 8의 배수로 저장됩니까? 나에게 약간 혼란스러운 점이 있습니까? – adil

관련 문제