掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.27905

ファイルへのヘキサ出力の方法について
投稿者---すずき(2006/08/09 00:14:47)


環境:Linux gcc

10進数→16進数に変換し、ファイルに出力するプログラムなのですが
ファイルへのヘキサ出力の方法を教えてください。

下記のようなコードを記述したのですが、
例えば、「1024」という数値を入力した場合、
ファイル出力への期待する結果は、
「0x0400」なのですが、
現在、「0x30343030」という形で数字が狂ってしまうのです。
(1→31という風に扱われています。)

何卒、ご教授ください。

[ソース]---------------
#include<stdio.h> 

int main() 
{ 
    FILE *outputFile;
    unsigned int  a;
    unsigned char Hex[256];

    /* 出力ファイルオープン (バイナリ出力 上書きモード) */
    outputFile = fopen( "aaa.txt", "wb+" );

    /* 変換対象の数字 */
    a = 1024;

    /* ヘキサに変換し、文字列で受ける */
    sprintf( Hex, "%02X", a );

    /* ファイル出力 */
    fprintf( outputFile, "%s", Hex );

    /* なお、直接ファイルに書き込む下記の形でも、結果は同じでした。 */
    /*  fprintf( outputFile, "%02X", a );    */


    fclose( outputFile );

    return 0;
} 



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイルへのヘキサ出力の方法について 27906 επιστημη 2006/08/09 01:14:52
<子記事> Re:ファイルへのヘキサ出力の方法について 27907 ruby 2006/08/09 09:58:15


No.27906

Re:ファイルへのヘキサ出力の方法について
投稿者---επιστημη(2006/08/09 01:14:52)


>10進数→16進数に変換し、ファイルに出力するプログラムなのですが
>ファイルへのヘキサ出力の方法を教えてください。

なにかとんでもなく勘違いしていませんか?

>下記のようなコードを記述したのですが、
>例えば、「1024」という数値を入力した場合、
>ファイル出力への期待する結果は、
>「0x0400」なのですが、
>現在、「0x30343030」という形で数字が狂ってしまうのです。
>(1→31という風に扱われています。)

狂っていません。

> /* ヘキサに変換し、文字列で受ける */
> sprintf( Hex, "%02X", a );

16進"文字列"に変換し、それをファイルに書くのだから
0x30343030 になるのはアタリマエです。



この投稿にコメントする

削除パスワード

No.27907

Re:ファイルへのヘキサ出力の方法について
投稿者---ruby(2006/08/09 09:58:15)


>ファイルへのヘキサ出力の方法を教えてください。

fwrite関数を使うとよいでしょう。

>ファイル出力への期待する結果は、
>「0x0400」なのですが、

この場合、sizeof(a) == 2である必要があると思います。

また、出力ファイルをバイナリー・ダンプしたとき、
先頭バイト:0x04
次のバイト:0x00
となっているのが仕様ですか?
その場合は、エンディアンについて意識したプログラムを書く
必要があると思います。


この投稿にコメントする

削除パスワード

No.27908

Re:ファイルへのヘキサ出力の方法について
投稿者---ruby(2006/08/09 10:01:11)


自己レスです。

>その場合は、エンディアンについて意識したプログラムを書く
>必要があると思います。

動作環境(マシンのCPU)によっては、特に意識しなくてよい場合もあります。


この投稿にコメントする

削除パスワード

No.27909

Re:ファイルへのヘキサ出力の方法について
投稿者---すずき(2006/08/09 23:44:25)


皆様、ありがとうございます。

こちらの問題は、解決しました。
なお、このような形にしました。
-----
    /* ファイル出力 */
/*    fprintf( outputFile, "%s", Hex ); */
    fputc(a >> 8, outputFile); 
    fputc(a, outputFile); 

-----
1バイト分、シフトさせて、
fputcで行っていきました。

これにより、「0x0400」と
出力させることができました。

皆様、ありがとうございました。




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧