0

バイナリモード[8ビットまたは12ビット]でファイルに保存する場合、文字はどのくらいのスペースを必要としますか?

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

また、長い[たとえば5]を節約すると、3ビット[101]または8ビット[00000101]のスペースが必要になります。

4

3 に答える 3

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

数値を10進数に変換し、log_10(ch)バイトを格納します。fwriteで保存すると、指定したバイト数が必要になります。

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

また、読み取り/書き込みアクセスはバイト単位であり、したがって常に8の倍数であるため、ファイルに1ビットを格納することは決してないので注意してください。

于 2013-03-07T13:30:16.637 に答える
1

これに必要な優れた支援ツールがあります:sizeofWiki記事

引用:

プログラミング言語CおよびC++では、単項演算子sizeofを使用して、データ型を表すために必要なバイト数で測定される、任意のデータ型のサイズを計算します。このコンテキストでのバイトはunsignedcharと同じであり、8ビットより大きくなる場合がありますが、これは一般的ではありません。sizeofの結果は、式の型またはその前にある括弧で囲まれた型指定子のサイズであり、通常はsize_tで示される符号なし整数型を持ちます。sizeofは、整数型や浮動小数点型、ポインター型、複合データ型(共用体、構造体、C ++クラス)などのプリミティブ型を含む、任意のデータ型に適用できます。

つまり、基本的には、何かが使用するバイト数を知りたい場合は、sizeofを使用するだけです。

ただし、注意してください。ポインタ、および実際にはポインタであるが、使用方法が異なるその他の要素(配列など)は、ポインタのサイズをバイト単位で表示するだけです...ポインタが指す構造ではありません。また、ポインタの保存は非常に限られた用途です。次に使用するオブジェクトがメモリ内の別の場所にある可能性があります。

于 2013-03-07T13:22:23.347 に答える
1

プラットフォームにを格納するために必要なバイト数をコピーしlongます(sizeof (long))。数値を表すために必要なビットだけをコピーした場合、データを読み取るときにデータを解釈する方法がありません。

ただし、コードでは、文字列にコピーしています。したがって、2進数ではなく、文字(おそらくASCII)表現が格納されます。

于 2013-03-07T13:23:29.870 に答える