![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
1.Intelの CPU リトルエンディアンでの、問題です。
バイナリファイルをバイト単位で読込み、これを16ビットの整数にしたいのですが、以下のようにコーディングしましたが、うまくいきません。解決方法をご教示下さい。
char s[2];
short int x; // 16ビットの整数です
// s[0] s[1]に、データを読み込みます。
x = (short)(s[0] + 256 * s[1]);
2.同様の問題で、ビッグエンディアンの場合は、どうすればよいかも、ご教示下さい。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
char s[2];
short int x;
// s[0], s[1]にデータを読み込む
x = (short)((s[0] & 0xff) | ((s1[1] << 8) & 0xff00));
でどうでしょうか?
これはCPUがビッグエンディアンの場合でも同じです。
ファイルへの格納形式がビッグエンディアンの場合、CPUがリトルエンディアンかビッグエンディアンかに関わらず、
x = (short)((s[1] & 0xff) | ((s1[0] << 8) & 0xff00));
とすればよいと思います。
ありがとうございました。
無事、解決いたしました。
ビットシフトを自分なりに考えてやってみていたのですが、単純に足し算したりしてうまくいかなかったので、:-)
まだ、疑問に思っていることがたくさんありますので、よろしくお願いします。
ありがとうございました。
No.3
- 回答日時:
整数演算でもともめるんだったらcharではなくunsigned charにしないと。
最上位ビットがたってたらマイナスになっちゃいます。
シフト演算するんだったらcharでもかまいませんが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 100バイトのバイナリファイルを読み込んで別のファイルに書き込みたいのですが、型をどうすればいいのか 1 2022/11/03 17:11
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
バイナリファイルをコピーする...
-
型変換
-
C言語の入力した文字を反転させ...
-
CStringをwchar_tに変換したい
-
文字列から空白を取り除きたい...
-
ネットワークにつながっている...
-
pingの結果を取得する方法
-
switch文で文字を比較すること...
-
ITです。早速ですがwinsockでUR...
-
c言語プログラミング実行時エラ...
-
'const char *' 型は 'char *' ...
-
c++ 文字列を入力して、一文字...
-
テキストデータをそのままバイ...
-
sprintf関数の作り方
-
C言語 文字列操作
-
C言語プログラミングについて(...
-
構造体の各メンバにfor文からア...
-
数字文字の出現回数を表示する...
-
【C言語】テキストファイル内の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
C言語のfor文です。 繰り返しの...
-
文字列から空白を取り除きたい...
-
charからLPTSTRへの変換方法
-
charでの計算?
-
配列をnビットシフトする
-
CStringをwchar_tに変換したい
-
c++ 文字列を入力して、一文字...
-
str系関数を使わずに二つの文字...
-
間接操作のレベルとは
-
int main()の・・・
-
C言語の入力した文字を反転させ...
-
atoi( ) の反対をやりたい
-
switch文で文字を比較すること...
-
テキストデータをそのままバイ...
-
Win32APIでのエディットボック...
-
double型の値をchar配列に変換...
-
干支のプログラム
-
コンパイルエラー invalid ope...
-
間接参照のレベルが異なっています
おすすめ情報