• ベストアンサー

rgb値を16進数に変換

r,g,b値がそれぞれ10進数で与えられ、それらをそれぞれ16進数に変換します。このとき、例えばrの値が10進数でnだとすると、 (16進数の2桁目)=n/16 (16進数の1桁目)=n mod 16 になると思いました。 しかし、手元にある、人からもらったサンプルでは、 (16進数の2桁目)=(n mod 256)/16 となっていました。1桁目は私の考えと同じでした。 なぜn mod 256が入っているのか分かる方、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>(16進数の2桁目)=(n mod 256)/16 n >= 256 でも正しい値を返すより頑健な(汎用的な)コードです。 0 <= n <= 255 がチェックされているならどちらでも 同じです。

bcbcbc
質問者

お礼

>0 <= n <= 255 がチェックされているなら そのサンプルプログラムはチェックされていなかったので、modが入っていたのですね。 理解できました。 回答ありがとうございました。

その他の回答 (1)

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

エラーデータ(256以上の値)が入ってくるかもしれない事を考慮したのでしょう。

bcbcbc
質問者

お礼

回答ありがとうございました。 納得です。