Wie konvertiert man in JavaScript dezimale Werte in ihr hexadezimales Äquivalent?
Antworten
Zu viele Anzeigen?Ohne die Schleife:
function decimalToHex(d) {
var hex = Number(d).toString(16);
hex = "000000".substr(0, 6 - hex.length) + hex;
return hex;
}
// Or "#000000".substr(0, 7 - hex.length) + hex;
// Or whatever
// *Thanks to MSDN
Ist es nicht auch besser, keine Schleifentests zu verwenden, die ausgewertet werden müssen?
Zum Beispiel anstelle von:
for (var i = 0; i < hex.length; i++){}
haben
for (var i = 0, var j = hex.length; i < j; i++){}
Die Kombination einiger dieser guten Ideen für eine Funktion zur Umwandlung von RGB-Werten in hexadezimale Werte (Hinzufügen der #
anderswo für HTML/CSS):
function rgb2hex(r,g,b) {
if (g !== undefined)
return Number(0x1000000 + r*0x10000 + g*0x100 + b).toString(16).substring(1);
else
return Number(0x1000000 + r[0]*0x10000 + r[1]*0x100 + r[2]).toString(16).substring(1);
}
Für alle Interessierten, Hier ist ein JSFiddle, das die meisten Antworten auf diese Frage vergleicht .
Und das ist die Methode, für die ich mich entschieden habe:
function decToHex(dec) {
return (dec + Math.pow(16, 6)).toString(16).substr(-6)
}
Denken Sie auch daran, dass Sie bei der Konvertierung von Dezimal- in Hexadezimalzeichen für die Verwendung in CSS als Farbdatentyp können Sie stattdessen die RGB-Werte aus dem Dezimalwert extrahieren und mit [rgb()](https://developer.mozilla.org/en/docs/Web/CSS/color_value#rgb()) .
Zum Beispiel ( JSFiddle ) :
let c = 4210330 // your color in decimal format
let rgb = [(c & 0xff0000) >> 16, (c & 0x00ff00) >> 8, (c & 0x0000ff)]
// Vanilla JS:
document..getElementById('some-element').style.color = 'rgb(' + rgb + ')'
// jQuery:
$('#some-element').css('color', 'rgb(' + rgb + ')')
Dies setzt #some-element
's CSS color
Eigenschaft zu rgb(64, 62, 154)
.