バイナリの計算について
Posted: 2012年4月26日(木) 13:17
初心者なのですが失礼します。
バイナリを読み込み合計して10進数で平均を
表示するプログラムを作成しています。
例えば、0xA2,0xF3,0xBD,0xD3,0x8F,0xD0
というバイナリデータがあるとして
10進数では、162,243,189,211,143,208なので
総和平均は192.666667となります。
以下のプログラムを考えたのですが、実行結果は
A2 F3 BD D3 8F D0 484 192
となります。
平均は小数点以下6桁まで表示したいのですが、
%fで表示した場合
A2 F3 BD D3 8F D0 484 0.000000
となってしまいます。
0.000000→192.666667と表示させたいのですが、
バイナリの計算に詳しい方教えて下さい。
バイナリを読み込み合計して10進数で平均を
表示するプログラムを作成しています。
例えば、0xA2,0xF3,0xBD,0xD3,0x8F,0xD0
というバイナリデータがあるとして
10進数では、162,243,189,211,143,208なので
総和平均は192.666667となります。
以下のプログラムを考えたのですが、実行結果は
A2 F3 BD D3 8F D0 484 192
となります。
平均は小数点以下6桁まで表示したいのですが、
%fで表示した場合
A2 F3 BD D3 8F D0 484 0.000000
となってしまいます。
0.000000→192.666667と表示させたいのですが、
バイナリの計算に詳しい方教えて下さい。
#include <stdio.h>
#include<math.h>
#include<stdlib.h>
int main(void)
{
FILE *fp1;
unsigned char buf[6];
unsigned short buf2[1];
int i;
char st1[64];
printf("ファイル名を入力してください\n");
gets(st1);
printf("よみこんだんよ\n");
fp1 = fopen( st1, "r" );
if( fp1 == NULL ){
printf( "%sファイルがありません", st1 );
getchar();
return -1;
}
fread( buf, 1, 6, fp1 );
for(i=0;i<6;i++){
printf("%02X ",buf[i]);//読み込まれているか確認
}
buf2[0]=buf[0]+buf[1]+buf[2]+buf[3]+buf[4]+buf[5];
printf("%02X ",buf2[0]);//合計
buf2[0]=buf2[0]/6;
printf("%02d",buf2[0]);//平均
fclose( fp1 );
getchar();
return 0;
}