プロが教えるわが家の防犯対策術!

質問ですが
int myclass::LuminanceSize(){ //buffer の 103-117が輝度部分

if(buf[103]){//1bit-->1
if(buf[104]){//2bit-->1
if(buf[105]){//3bit-->1
if(buf[106]){//4bit-->1
if(buf[107]){//5bit-->1
if(buf[108]){//6bit-->1
return(8);/*return(0);*/// 1111110
}else return(7);/*return(0);*/// 111110
}else return(6);/*return(0);*/// 11110
}else return(5);/*return(0);*/// 1110
}else return(4);/*return(0);*/// 110
}else{//2bit-->0
if(buf[105])return(3);/*return(0);*/// 101
elsereturn(0);// 100
}
}else{//1bit-->0
if(buf[104])return(2);/*return(0);*/// 01
else return(1);/*return(0);*/// 00
}
}
このようなクラスがあったときこのクラスは何を意味しているのでしょうか。また、if(mark[Luminum]){ ではじまるif文があったときこのmark[Luminum]はmark[Luminum]==1のときif文の中身を実行するのでしょうか。もしよろしければご教授ください。

A 回答 (2件)

配列bufの値と、このメソッドの戻り値を表にすると、


次のようになりますね。
推測するに、bufの103~108の部分は、輝度値のサイズ?を表す値を、2進数でコード化したもののようです。

   bufインデックス   LuminanceSize
103 104 105 106 107 108
  1  1  1  1  1  1    8
  1  1  1  1  1  0    7
  1  1  1  1  0      6
  1  1  1  0        5
  1  1  0          4
  1  0  1          3
  0  1            2
  0  0            1
  1  0  0          0


コメントにbufの103~117が輝度部分と記されていますので、103~108の部分で輝度値のビット数なりバイト数なりをコード化し、残りの部分で実際の値をコード化しているのではないでしょうか。

あくまで推測ですので、よく実際の動作をお確かめになってくださいね。
    • good
    • 0

> このようなクラスがあったとき



クラスのメンバ関数ですね。
buf[103]~buf[108]の内容に応じて、0~8の値を返すモジュールとしか説明できないです。

--
> if(mark[Luminum]){ ではじまるif文があったとき

mark[Luminum]が0以外の時、処理が行われます。
mark[]に0か1しか入らないのならば、==1の時と読み替えて構わないと思いますが、予期しないバグの原因ではあります。
    • good
    • 0

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