hex文字列(RRGGBB)からARGBのint値を作る

  • Java
  • ARGB

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

やりたいこと

"545455" みたいな6桁のhex文字列(RRGGBB)を、Javaでintのカラーコード(ARGB)に変換したい。

手順

1. hex文字列をintに変換する

int rgb = Integer.parseInt("545455", 16);
// => 0x00545455 (5526613)

parseInt に基数16を渡すだけで、6桁のhex文字列は24bitのRGB値になる。

2. アルファ値を上位バイトに足す

RGBだけだとアルファ(不透明度)の情報がないので、ARGBにするには上位8bitにアルファ値を入れる必要がある。完全不透明なら 0xFF。

int argb = rgb | 0xFF000000;
// => 0xFF545455 (-11250603 as signed int)

まとめると

// hex文字列 → RGB
int rgb = Integer.parseInt(hexString, 16);
// RGB → ARGB(不透明)
int argb = rgb | 0xFF000000;

hex文字列からカラーコードを組み立てる系のコードでは、地味によく出てくるパターン。


補足: アルファ値を足すのに + を使ってるコードも見かけるが(Integer.parseInt(hexString, 16) + 0xFF000000)、rgb が 0x00FFFFFF 以下なら | と結果は同じになる。ただしビットフィールドの合成は意図的にも安全性的にも | の方が適切。