Frage Wie konvertiert man Dezimal in Hex in JavaScript?


Wie konvertiert man dezimale Werte in ihre Hex-Entsprechung in JavaScript?


1184
2017-09-11 22:26


Ursprung


Antworten:


Konvertieren Sie eine Zahl in eine hexadezimale Zeichenfolge mit:

hexString = yourNumber.toString(16);

und den Prozess umkehren mit:

yourNumber = parseInt(hexString, 16);

1988
2017-09-11 22:28



Wenn Sie Dinge wie Bitfelder oder 32-Bit-Farben behandeln müssen, müssen Sie mit vorzeichenbehafteten Zahlen umgehen. Die JavaScript-Funktion toString(16) wird eine negative Hex-Zahl zurückgeben, die normalerweise nicht das ist, was Sie wollen. Diese Funktion macht einige verrückte Ergänzungen, um es zu einer positiven Zahl zu machen.

function decimalToHexString(number)
{
  if (number < 0)
  {
    number = 0xFFFFFFFF + number + 1;
  }

  return number.toString(16).toUpperCase();
}

console.log(decimalToHexString(27));
console.log(decimalToHexString(48.6));


119
2018-03-30 16:05



Der folgende Code konvertiert den Dezimalwert d in Hex. Außerdem können Sie dem hexadezimalen Ergebnis eine Auffüllung hinzufügen. So wird 0 standardmäßig zu 00.

function decimalToHex(d, padding) {
    var hex = Number(d).toString(16);
    padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;

    while (hex.length < padding) {
        hex = "0" + hex;
    }

    return hex;
}

68
2017-09-11 22:29



function toHex(d) {
    return  ("0"+(Number(d).toString(16))).slice(-2).toUpperCase()
}

44
2017-11-05 21:08



Mit Polsterung:

function dec2hex(i) {
   return (i+0x10000).toString(16).substr(-4).toUpperCase();
}

30
2017-07-13 14:29



Für die Fertigstellung, wenn Sie möchten Zweierkomplement hexadezimale Darstellung einer negativen Zahl, können Sie die verwenden Null-Fill-Rechts-Verschiebung >>> Operator. Zum Beispiel:

> (-1).toString(16)
"-1"

> ((-2)>>>0).toString(16)
"fffffffe"

Es gibt jedoch eine Einschränkung: Javascript bitweise Operatoren behandeln ihre Operanden als eine Folge von 32 BitsDas heißt, Sie erhalten das 32-Bit-Zweierkomplement.


25
2018-06-14 10:59



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

Es ist auch nicht besser, keine Loop-Tests zu verwenden, die ausgewertet werden müssen zB statt:

for (var i = 0; i < hex.length; i++){}

haben

for (var i = 0, var j = hex.length; i < j; i++){}

16
2017-09-11 03:05



Kombinieren Sie einige dieser guten Ideen für eine rgb zu hex Funktion (fügen Sie die # woanders für html / css hinzu):

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);
}

13
2017-11-15 12:44