
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ランキング
-
'const char *' 型は 'char *' ...
-
CStringをwchar_tに変換したい
-
Win32APIでのエディットボック...
-
簡単な電卓プログラムについて
-
charでの計算?
-
コンパイラーの不具合?
-
ネットワークにつながっている...
-
sprintf関数の作り方
-
文字列
-
TCHAR文字列?の特定部分の数字...
-
c言語でユーザ関数を利用して入...
-
アルファベットの並べ替え
-
char型からのバイト数取得
-
文字列ポインタを結合
-
IPからホスト名の変換
-
c++ 文字列を入力して、一文字...
-
main の引数には const 付けた方が
-
c#でbmp画像の上下反転
-
char型変数のアドレスを coutで...
-
new
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
文字列から空白を取り除きたい...
-
間接参照のレベルが異なっています
-
C言語のfor文です。 繰り返しの...
-
CStringをwchar_tに変換したい
-
テキストデータをそのままバイ...
-
charからLPTSTRへの変換方法
-
atoi( ) の反対をやりたい
-
charでの計算?
-
配列をnビットシフトする
-
c++ 文字列を入力して、一文字...
-
'const char *' 型は 'char *' ...
-
c言語でユーザ関数を利用して入...
-
干支のプログラム
-
switch文で文字を比較すること...
-
char型からのバイト数取得
-
ネットワークにつながっている...
-
getchar()を int でとる理由...
-
間接操作のレベルとは
-
str系関数を使わずに二つの文字...
おすすめ情報