
詳しい方教えていただけると助かります。
OS:LINUX
コンパイラ:GCC
以下のプログラムを実行し、結果ファイルの test.txt を od で見ると
期待した通りの結果になりません。long 型や、short型は期待通りの結果になるのですが。
どういうロジックを経て、以下のような数値になっているのでしょうか?変換ロジック等がわかるとありがたいのですが・・・。
#include <stdio.h>
main()
{
float f;
char line[4];
FILE *fp;
f = 1234;
memcpy(&line[0], &f, sizeof(float));
fp = fopen("test.txt", "w");
fputc(line[0], fp);
fputc(line[1], fp);
fputc(line[2], fp);
fputc(line[3], fp);
fclose(fp);
}
test.txt 内容を od した結果の数値
0000 c000 8c29 4167

No.5ベストアンサー
- 回答日時:
こちらの環境では、以下のようになりました。
od -t x1 test.txtの結果が
00 40 9a 44
となります。
od -t x test.txt
なら
449a4000
です。
od test.txtなら
040000 042232
です。
odコマンドは具体的には、どのようなオプションを指定されてますか。
実行環境は以下の通りです。
CPU INTEL系
OS CentOS release 4.4
gcc 3.4.6
No.6
- 回答日時:
この処理の結果、8バイトのファイルができているということでしょうか。
fputc() は1バイト出力すると思いますので、4バイトのファイルができているはずですが……。一度、test.txt を削除し、コンパイルもやり直してから実行しても同じ結果でしょうか。"od -t x1 test.txt" の結果を見たいですね。
No.4
- 回答日時:
#1 ですが, この結果が本当なら IEEE754 を見ても幸せにはなれないです. すみません. IEEE754 なら 1234 は 449a4000 になります.
とりあえずお使いの CPU と gcc のバージョンを示してもらえませんか?
No.3
- 回答日時:
たぶん、float型の1234.0という数値は、メモリに
41678c29c0000000
と格納していると思うのです。
odでそういう出力結果を得るのは、エンディアンネスが関係していると思うのです。
お使いのマシンは、たぶんリトルエンディアンだろうと思うのです。
エンディアンネスやリトルエンディアン(ビッグエンディアンっていうのもあります)について
よくわからなければ、GoogleやWikipediaあたりで調べてみればよいと思うのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.txtではなく.logの方が良いの...
-
psqlでエラーログをとりたい
-
バッチ処理でファイルの中身を...
-
バッチファイルからVBAに引数を...
-
GetOpenFilenameを使用し、複数...
-
多数のサブディレクトリ内のフ...
-
wikiでローカルファイルのリン...
-
UWSCでテキストファイルを開い...
-
コマンドプロンプトで指定した...
-
リモートのファイル存在確認
-
拡張子を元に戻す
-
VB.NETでフォルダを圧縮
-
バッチ(bat)でリストファイルか...
-
CMakeでエラーが出ます
-
unlinkで削除されないのは?
-
fortran77で複数のファイルの読...
-
OpenCVの正解生成のcreatesamples
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
エクセルのVBAについて とある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
テキストファイルで提出とは?
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
拡張子を元に戻す
-
COPYコマンドで結合すると余計...
-
バッチファイルからVBAに引数を...
-
renameコマンドについて
-
ファイルの最後に文字列挿入
-
3つ以上のテキストファイルをコ...
-
バッチファイルで文字列削除に...
-
VBSでフォルダ内のテキストファ...
-
ftpコマンドで複数のファイルを...
-
ファイル内容の修正、行削除に...
-
★★★PowerShellのpatternについ...
-
コマンドプロンプトで指定した...
-
forfilesで検索したファイルを...
-
バッチファイル 複数ファイル...
おすすめ情報