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ランキング
-
C言語のfor文です。 繰り返しの...
-
fgetsなどのときのstdinのバッ...
-
c言語プログラミング実行時エラ...
-
charからLPTSTRへの変換方法
-
テキストデータをそのままバイ...
-
間接操作のレベルとは
-
文字列を任意の場所で分割(spli...
-
const char** p;のとき、free(p...
-
charでの計算?
-
c言語配列の結合についてです。...
-
間接参照のレベルが異なっています
-
ソケット関数について(winsock)
-
atoi( ) の反対をやりたい
-
char型と言うものがまだ理解出...
-
YUV⇔RGB変換がうまくいきません。
-
干支のプログラム
-
c言語の文字列の逆順のプログラ...
-
-'0'の意味について
-
C#からC言語で作成したDLLに文...
-
recvfrom関数の戻り値がおかし...
マンスリーランキングこのカテゴリの人気マンスリー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...
-
間接参照のレベルが異なっています
おすすめ情報