在 JavaScript 中,如何将十进制值转换为等效的十六进制值?
如何在 JavaScript 中将十进制转换为十六进制
IT技术
javascript
hex
number-formatting
base
2021-01-28 08:14:03
6个回答
使用以下命令将数字转换为十六进制字符串:
hexString = yourNumber.toString(16);
并通过以下方式逆转该过程:
yourNumber = parseInt(hexString, 16);
如果您需要处理位域或 32 位颜色之类的东西,那么您需要处理有符号数。JavaScript 函数toString(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));
下面的代码将十进制值 d 转换为十六进制。它还允许您向十六进制结果添加填充。所以默认情况下 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()
}
为完整起见,如果您想要负数的二进制补码十六进制表示,您可以使用零填充右移>>>
运算符。例如:
> (-1).toString(16)
"-1"
> ((-2)>>>0).toString(16)
"fffffffe"
但是有一个限制:JavaScript 按位运算符将其操作数视为 32 位序列,也就是说,您会得到 32 位二进制补码。