Überprüfung
Viele der hier gegebenen Antworten beruhen auf Math.random().toString(16)
. Manchmal multiplizieren sie eine Zufallszahl mit einer Zahl und gehen davon aus, dass eine Umwandlung in eine hexadezimale Zeichenkette immer eine hexadezimale Fließkommadarstellung ergibt, die mindestens sechs Ziffern nach dem Punkt hat (und verwenden diese Ziffern als Farbe).
Dies ist eine Fehlannahme
Denn es gibt viele Zahlen, die weniger als sechs Ziffern (nach dem Punkt) ergeben. Wenn Math.random()
eine solche Zahl wählen, dann wird die resultierende hexadezimale Farbe ungültig sein (es sei denn, jemand kümmert sich um diesen Fall). Hier ist ein Beispielgenerator (den ich auf der Grundlage von dieser Konverter ) für solche Werte.
function calc() {
let n = hex2dec(hexInput.value)
console.log(`${n} -> ${n.toString(16)}` );
}
// Source: https://stackoverflow.com/questions/5055723/converting-hexadecimal-to-float-in-javascript/5055821#5055821
function hex2dec(hex) {
hex = hex.split(/\./);
var len = hex[1].length;
hex[1] = parseInt(hex[1], 16);
hex[1] *= Math.pow(16, -len);
return parseInt(hex[0], 16) + hex[1];
}
Put some 5-digit (or less) hexdecimal number in range 0-1<br>
<input id="hexInput" value="0.2D4EE">
<button onclick="calc()">Calc</button>
Ich habe bereits zwei Antworten auf Ihre Frage gegeben, ohne diese Annahme: RGB y hexadezimal Daher werde ich in dieser Antwort keine weitere Lösung einfügen.