バイナリファイルに16ビットで表現された正数が順番に格納されています.
もし(10進数で)1,10,15の値がこの順番で格納されていたら,
Stirlingではどのように表示されるのでしょうか?
ファイルからこのデータx個を配列dataに読み込むために
unsigned short data[x];
fseek(fp, 0L, SEEK_SET); /* ファイルポインタを先頭へ */
fread(data, 2, x, fp); /* 2バイトずつx個読み込む */
としたのですが,
このdata[i]に正しく格納されているか確認したいためです.
Stirlingで「00 01 00 0A 00 0F」となっていれば,
data[0]:1,data[1]:10,data[2]:15
になると思ったのですが,
data[0]:256,data[1]:2560,data[2]:3840
になりました.
ちなみに,256,2560,3840は16進では100,A00,F00です.
どこか間違っているのでしょうか?
長くなりましたが,どなたかご教授ください.
No.4
- 回答日時:
下記のご質問については、すべて「はい」だと思います。
余談ですが、2560や0A00と表記したとき左側が上位桁ですよね?
エディタでは左側に若いアドレス(のデータ)を表示します。
そのデータが16進2桁なのでその2桁は左側が上位桁になります。
だから、あんまり不思議はないのかも・・
(若いアドレスに下位桁がくるので)
> 16ビット正数が順番に格納されている場合,
> このデータを取り出すためのプログラムは
> fread(data, 2, x, fp);
> で合っているのでしょうか?
> またファイルの中身をStirlingで編集するときは,
> 2バイトの上位と下位を入れ替えて書き込まなければならないということでしょうか?
> では,data[0]:1,data[1]:10,data[2]:15にするためには,
> 「01 00 0A 00 0F 00」とすればよいわけですね?
No.3
- 回答日時:
リトルエンディアンでは下位バイトが若いアドレスに来ます。
エンディアン - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3% …
エンディアンはOSというよりもプロセッサに依存します。
No.2ベストアンサー
- 回答日時:
> data[0]:1,data[1]:10,data[2]:15
> になるはずが,なぜ
> data[0]:256,data[1]:2560,data[2]:3840になってしまうのでしょうか?
data[0]:256,data[1]:2560,data[2]:3840
256,2560,3840は16進では100,A00,F00
ということですから先頭に0を付加すると
0100,0A00,0F00 となります。(2バイト X 3文字 = 6バイト)
これをファイルに記録すると Stirlingで見たとおり
「00 01 00 0A 00 0F」と保存されるのです。(2バイトの上位/下位が入れ替わる)
これは MS-DOS/Windows系の仕様なのでしょう。MAC-OSは違ったと思います。
分かりにくいけど歴史といきさつがあったのでしょうね。
Stirling、使ったことがありませんが良さそうなのでこの機会に使ってみます。ありがとうございました
この回答への補足
16ビット正数が順番に格納されている場合,
このデータを取り出すためのプログラムは
fread(data, 2, x, fp);
で合っているのでしょうか?
またファイルの中身をStirlingで編集するときは,
2バイトの上位と下位を入れ替えて書き込まなければならないということでしょうか?
回答ありがとうございます.
では,data[0]:1,data[1]:10,data[2]:15にするためには,
「01 00 0A 00 0F 00」とすればよいわけですね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) 格納したデータを配列のように扱う方法はありますか? 8 2023/06/05 08:53
- C言語・C++・C# プログラミングの問題です。写真のプログラムの1から10を下のように入力しましたがプログラムが上手くい 3 2022/07/01 23:31
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- PDF ハイパーリンク先の一括変更について 2 2022/03/23 08:13
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字の容量(サイズ)についての...
-
EXCELでの16進数取り出し、上...
-
携帯電話の略語であるMBって英...
-
KBとMB
-
KBのMB違いって
-
GB と Gbの違いの意味
-
1バイトは何ビット?
-
文字化けはなぜ日本語が入って...
-
1Mバイトって何バイト?
-
DVD-R 4.7GBって、何byte でし...
-
CSV データのバイト数を調べる...
-
実行計画の「COST」と「BYTE」...
-
1KBは、2の8乗X1000ではない...
-
1Mbpsって毎秒何キロバイト?
-
Oracle AL32UTF8でのバイトサイ...
-
2バイト文字を一括削除するマクロ
-
oracle11gで、PL/SQLにてAとい...
-
1MBって何K?
-
なぜゲームのカセットの要領は...
-
文字数(バイト数)の数え方が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
携帯電話の略語であるMBって英...
-
文字の容量(サイズ)についての...
-
EXCELでの16進数取り出し、上...
-
KBのMB違いって
-
KBとMB
-
1Mバイトって何バイト?
-
実行計画の「COST」と「BYTE」...
-
K KB MB について詳し...
-
文字数(バイト数)の数え方が...
-
CSV データのバイト数を調べる...
-
Oracle AL32UTF8でのバイトサイ...
-
32bit = 4GB(バイト)?
-
文字化けはなぜ日本語が入って...
-
カナカナの(半)濁点がついた文...
-
GB と Gbの違いの意味
-
DVD-R 4.7GBって、何byte でし...
-
2バイト文字を一括削除するマクロ
-
文字列をバイト数分表示するには?
-
マトリックスサイズが512×512で...
-
アルファベット30文字は何バイ...
おすすめ情報