【初心者歓迎】C/C++室 Ver.48【環境依存OK】at TECH【初心者歓迎】C/C++室 Ver.48【環境依存OK】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト683:デフォルトの名無しさん 08/02/15 01:17:05 バイナリファイルについての質問です。 とあるバイナリファイルの中に、12ビット単位でひとつの要素となるデータが99バイト分入っています。 これを3バイトずつファイルから読み出して12ビット単位で区切り、short型に変換して 再度バイナリファイルに書き出したいと思っています。 この場合、バイナリモードでファイルを開いて、char data[3]にread関数で3バイト格納しても シフト演算子が使えないため、上手く12ビット単位でデータを取得することができません。 何か良い案ないでしょうか? 684:デフォルトの名無しさん 08/02/15 01:24:09 >>683 「シフト演算子が使えない」と思い込む根拠は? まぁ、環境依存上等でビットフィールドを使うか、自前でビット演算するかの違いだけどね。 685:デフォルトの名無しさん 08/02/15 01:24:18 やり方は色々あるけど、とりあえず3byte読んでから4byteの整数に格納sすれば? 686:デフォルトの名無しさん 08/02/15 01:27:43 >>683 short a1 = (unsigned short)data[0] << 4 | (unsigned short)data[1] >> 4; // 前半12bit short a2 = (unsigned short)data[1] << 8 | (unsigned short)data[2]; // 後半12bit これでだめかや? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch