dポイントプレゼントキャンペーン実施中!

16進数数字を結合して、10進数にしたいです。具体的な記述を教えてください。


今は、rreg、greg、breg(8bitの数)を連結して出力するというのを事をしてますが、
これを連結してその後で10進数に書き換えたいです。


【現在】
int rreg, greg, breg;

for (i = 0 ; i < W * 3 * H ; i++){
if(i%3==0) rreg = buf_out[i]; if(i%3==1) greg = buf_out[i]; if(i%3==2) breg = buf_out[i];
if(i%3==2){fprintf(fp_out, "%02x%02x%02x\n", rreg, greg, breg);}

A 回答 (3件)

こんな感じでいかがでしょう?



for( i = 0; i < W * H; i++ ){
 int rreg = buf_out[i*3];
 int greg = buf_out[i*3+1];
 int breg = buf_out[i*3+2];
 int rgb = rreg << 16 | greg << 8 | breg;
 fprintf( fp_out, "%06x\n", rgb );
}
    • good
    • 0

本題とは関係ないけど, 「3個で 1つの単位」なんだから i を 3ずつ増やしていけば簡単そうだとは思いませんか?

    • good
    • 0

rreg*65536+greg*256+bregでどうでしょう。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!