1. ホーム
  2. javascript

[解決済み] JavaScriptで文字列をもとに16進数の色を作成する

2022-04-15 03:48:44

質問

任意の古い文字列(通常は1つの単語)を受け取り、その文字列から 何とか の間の16進数値を生成します。 #000000#FFFFFF ということで、HTML要素の色として使用することができますね。

もしかしたら、省略形の16進数値(例えば #FFF その方が面倒がないのであれば。実際、「ウェブセーフ」パレットからの色が理想的でしょう。

解決方法は?

からJavaを移植するだけです。 任意の文字列に対して16進カラーコードを計算する をJavascriptに変換しています。

function hashCode(str) { // java String#hashCode
    var hash = 0;
    for (var i = 0; i < str.length; i++) {
       hash = str.charCodeAt(i) + ((hash << 5) - hash);
    }
    return hash;
} 

function intToRGB(i){
    var c = (i & 0x00FFFFFF)
        .toString(16)
        .toUpperCase();

    return "00000".substring(0, 6 - c.length) + c;
}

変換するには、次のようにします。

intToRGB(hashCode(your_string))