掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バイナリファイルの中身を読み込むには? (ID:62962)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
初心者ですがよろしくお願いします。 現在、Viaual Studio.net 環境で、C++言語を使って開発をしていますが、 問題点が出てきたのでどなたかわかる方ご教授よろしくお願いします。 【やりたいこと】 バイナリファイル転送を行う。 その際、ファイルのヘッダ部から総バイト数を計算できるので、転送前にその数値を読み取りたい。 [ヘッダ部] 01 00 00 00 01 3E 0B C2 00 00 00 00 00 00 00 00 (a)5,6バイト目 01 3E(318) (b)7,8バイト目 0B C2(3010) 今、必要な情報は(a)と(b)を10進数表記にした数値、つまり「318」「3010」 が欲しい情報です。 318*3010がデータ部の総バイト数になります。 [ソース] −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− if ((fi = fopen("hoge.hoge", "rb")) == NULL) { AfxMessageBox("Cannot open input file"); return; } int a = 0,b = 0,c = 0,d = 0; fread(&charbuf, 1, 1, fi); fread(&charbuf, 1, 1, fi); fread(&charbuf, 1, 1, fi); fread(&charbuf, 1, 1, fi); fread(&charbuf, 1, 1, fi); a = (int)charbuf; //ここで「01」を読み込む fread(&charbuf, 1, 1, fi); b = (int)charbuf; //ここで「3E」を読み込む fread(&charbuf, 1, 1, fi); c = (int)charbuf; //ここで「0B」を読み込む fread(&charbuf, 1, 1, fi); d = (int)charbuf; //ここで「C2」を読み込む a*256+bの出力 c*256+dの出力 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 【現象】 a*256+b、c*256+dの出力を確認しました。 a*256+bは期待通りの数値318が出力されました。 しかし、c*256+dの出力2754となりました。。 そこで、cとdを各々出力させてみたところ、 c → 2816(問題なし) d → -62 (問題あり) となりました。 2816「0B」は問題ありません。 -62は「FFFFFFFFFFFFFFC2」でマイナスになっています。 何か原因は考えられるでしょうか。。 どなたか手助け宜しくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.