で16進数文字列に変換し、バッファ、 下の画像は、バイナリファイルの入力ファイル です。問題は、私は以下のようにC言語で16進文字列にバッファを変換しようとしているC
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "fcntl.h"
#if defined(_MSC_VER)
#include <BaseTsd.h>
typedef SSIZE_T ssize_t;
#endif
#define BUFF_SIZE 5
int main()
{
char buff[BUFF_SIZE];
int fd;
ssize_t rd_size;
FILE *rfp;
FILE *ofp;
ofp = fopen("output.txt", "w");
rfp = fopen("test.bin", "rb");
while (4== (fread(buff, 1, 4, rfp)))
{
fprintf(ofp, "%02X%02X%02X%02X \n", buff[0], buff[1], buff[2], buff[3]);
}
fclose(ofp);
fclose(rfp);
return 0;
}
その後、私は上記のコードを使用、私はHEXファイル にビンを持っているが、私は結果で問題を持っています。
04002B2B
000001FFFFFFFF
00030003
00000000
00000000
00000000
00000300
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00500050
00500050
00500050
00500050
00000000
FFFFFF80002000
00000000
08700F00
00000000
00000000
00000001
00000002
00000003
00000004
00000005
00000006
00000007
FFFFFF800FFFFFFFF01E
087007FFFFFF80
00320032
0BFFFFFFB80820
00050005
2DFFFFFFC7114D
00FFFFFFC20118
00001B58
上記のファイルがありますが、特に私はこの出力を "000001FFFFFFFF"にしたくありません。しかし、私は、私はLinux上で実行したい
更新
を行うことになっていますかわかりません。しかし、私がファイルを実行すると、私はsegmantエラーを受け取りました。 私は何をすべきか教えていただけますか?
簡単な質問です。私はgccでlinuxを実行したいが、私はいくつかのセグマントフォルトを持っている。 – grander3
@ grander3それはまったく別の問題であり、何か新しい質問を投稿するべきである。しかし、それを行う前に、デバッガを使ってクラッシュが発生する場所を調べてください。表示するソースで、クラッシュの位置をコメントで示します。また、クラッシュの時点で関与するすべての変数の値を表示します。ああ、あなたがクラッシュをキャッチするときは、コールスタックを*あなたのコードに移動してください。 –
@ grander3また、ツアーを受けてください(http://stackoverflow.com/tour)と[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)。それはstackoverflow.comでここにあなたを助けます。 –