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));
とすればよいと思います。
ありがとうございました。
無事、解決いたしました。
ビットシフトを自分なりに考えてやってみていたのですが、単純に足し算したりしてうまくいかなかったので、:-)
まだ、疑問に思っていることがたくさんありますので、よろしくお願いします。
ありがとうございました。
お探しの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のバッ...
-
str系関数を使わずに二つの文字...
-
配列をnビットシフトする
-
Win32APIでのエディットボック...
-
型変換
-
全角文字を含んだ文字の並びを...
-
c言語です。
-
下記のプログラムがコンパイラ...
-
c言語の問題の説明、各所ごとに
-
strlen関数と同じ働きをする関...
-
C言語で、入力された、文字列を...
-
double型の値をchar配列に変換...
-
C言語の入力した文字を反転させ...
-
enumの記述について。
-
c言語でソーベルフィルタが作り...
-
宣言による処理の重さ
-
文字列の中から必要なデータを...
-
CStringをwchar_tに変換したい
-
間接操作のレベルとは
-
'const char *' 型は 'char *' ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
C言語のfor文です。 繰り返しの...
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
C言語の入力した文字を反転させ...
-
'const char *' 型は 'char *' ...
-
配列をnビットシフトする
-
str系関数を使わずに二つの文字...
-
int main()の・・・
-
atoi( ) の反対をやりたい
-
c++ 文字列を入力して、一文字...
-
CStringをwchar_tに変換したい
-
switch文で文字を比較すること...
-
干支のプログラム
-
絶対パスからのファイル名の切...
-
3桁区切(コンマ)記号をつけ...
-
間接操作のレベルとは
-
間接参照のレベルが異なっています
-
【C言語】文字型と整数型の違い
おすすめ情報