バイナリファイルに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.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」とすればよいわけですね?
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というよりもプロセッサに依存します。
お探しの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ランキング
-
ファイル名の長短について
-
携帯電話の略語であるMBって英...
-
EXCELでの16進数取り出し、上...
-
KBのMB違いって
-
文字の容量(サイズ)についての...
-
(*^_^*) キロバイトと字数の...
-
マトリックスサイズが512×512で...
-
GB と Gbの違いの意味
-
1MBって何K?
-
動画容量10Gを50Mpdsでアップロ...
-
新聞1ページは何バイトですか?...
-
情報の単位[ビット]について
-
1バイトは何ビット?
-
1Mバイトって何バイト?
-
テーブルのバイト数計算
-
テラビットは何TB?
-
シフトjisコードで記載された40...
-
CSV データのバイト数を調べる...
-
アルファベット30文字は何バイ...
-
DVD-R 4.7GBって、何byte でし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELでの16進数取り出し、上...
-
KBのMB違いって
-
文字の容量(サイズ)についての...
-
携帯電話の略語であるMBって英...
-
1Mバイトって何バイト?
-
JIS、SHIFT-JIS、EUCはなぜでき...
-
実行計画の「COST」と「BYTE」...
-
K KB MB について詳し...
-
GB と Gbの違いの意味
-
電子透かしを使用した場合の著...
-
KBとMB
-
32bit = 4GB(バイト)?
-
Excel_VBAで改行コードの無いフ...
-
(*^_^*) キロバイトと字数の...
-
メモリーの単位を解説してくだ...
-
文字数(バイト数)の数え方が...
-
1バイトは何ビット?
-
シフトjisコードで記載された40...
-
工学 容量の計算?
-
DVD-R 4.7GBって、何byte でし...
おすすめ情報