JavaScript에서 십진수 값을 16 진수로 변환하는 방법은 무엇입니까?
답변
다음을 사용하여 숫자를 16 진수 문자열로 변환하십시오.
hexString = yourNumber.toString(16);
그리고 다음과 같이 프로세스를 되돌립니다.
yourNumber = parseInt(hexString, 16);
답변
비트 필드 또는 32 비트 색상과 같은 것을 처리해야하는 경우 부호있는 숫자를 처리해야합니다. JavaScript 함수 toString(16)
는 일반적으로 원하는 것이 아닌 음의 16 진수를 반환합니다. 이 함수는 양수로 만들기 위해 미친 듯이 추가합니다.
function decimalToHexString(number)
{
if (number < 0)
{
number = 0xFFFFFFFF + number + 1;
}
return number.toString(16).toUpperCase();
}
console.log(decimalToHexString(27));
console.log(decimalToHexString(48.6));
답변
아래 코드는 10 진수 값 d를 16 진수로 변환합니다. 또한 16 진 결과에 패딩을 추가 할 수 있습니다. 따라서 0은 기본적으로 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;
}
답변
function toHex(d) {
return ("0"+(Number(d).toString(16))).slice(-2).toUpperCase()
}
답변
완전성을 위해 2의 보수 16 진수를 음수로 나타내려면 zero-fill-right shift >>>
연산자를 사용할 수 있습니다 . 예를 들어 :
> (-1).toString(16)
"-1"
> ((-2)>>>0).toString(16)
"fffffffe"
그러나 한 가지 제한 사항이 있습니다. JavaScript 비트 연산자는 피연산자를 32 비트 시퀀스로 취급합니다 . 즉, 32 비트 2의 보수를 얻습니다.
답변
패딩 포함 :
function dec2hex(i) {
return (i+0x10000).toString(16).substr(-4).toUpperCase();
}
답변
루프없이 :
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
또한 평가해야하는 루프 테스트를 사용하지 않는 것이 좋습니까?
예를 들어,
for (var i = 0; i < hex.length; i++){}
있다
for (var i = 0, var j = hex.length; i < j; i++){}