在本文中,我们将学习如何在 JavaScript 中轻松地将十进制数转换为其等效的十六进制数。 我们将研究一些需要执行此操作的真实场景。

数字toString() 方法

要在 JavaScript 中将十进制转换为十六进制,请对十进制调用 toString() 方法,将 16 作为基数参数传递,即 num.toString(16)。 toString() 方法将以十六进制形式返回数字的字符串表示形式。

例如:

const num = 60;
const hex = num.toString(16);
console.log(hex); // 3c// Use parentheses when calling toString() directly
const hex2 = (60).toString(16);
console.log(hex2); // 3c

Number toString() 方法返回数字的字符串表示形式。 如果第一个参数指定了基数,则数字以该基数表示。 我们传递 16 以使用基数 16,这是十六进制基数。

十六进制使用 16 个符号来表示数字:

0 到 9 表示值 0 到 9
a 到 f(A 到 F)表示值 10 到 16。字母不区分大小写,因此 3C2b 与 3c2B 的值完全相同。

在数字文字上调用 toString()

如果直接对数字文字调用 toString(),请确保将其括在括号 (( )) 中或使用两个点 (..before toString():

// Use parentheses
const hex2 = (60).toString(16);
console.log(hex2); // 3c// Use double dots
const hex3 = 50..toString(16);
console.log(hex3); // 32

如果你只使用一个不带括号的点,JavaScript 解析器会将其视为数字文字的一部分——小数点——而不是成员访问运算符。

console.log(40.); // 40
console.log(20.); // 20

所以会出现错误,因为在成员名称之前没有成员访问运算符。

// SyntaxError
console.log(40.toString(16));// SyntaxError
console.log(20.toString(16));

因此,您将数字括在括号中,以便它们之外的所有内容都被视为与数字分开。

console.log((40).toString(16)); // 28console.log((20).toString(16)); // 14

或者您添加第二个点,它将被视为成员访问运算符。

console.log(40..toString(16)); // 28console.log(20..toString(16)); // 14

用例:将 RGB(A) 转换为十六进制

将十进制值转换为十六进制值的一种常见用途是将 RGB 颜色代码转换为其等效的十六进制值。 我们可以这样做:

function decToHex(dec) {return dec.toString(16);
}function padToTwo(str) {return str.padStart(2);
}function rgbToHex(r, g, b) {const hexR = padToTwo(decToHex(r));const hexG = padToTwo(decToHex(g));const hexB = padToTwo(decToHex(b));return `#${hexR}${hexG}${hexB}`;
}console.log(rgbToHex(255, 128, 237)); // #ff80edconsole.log(rgbToHex(195, 151, 151)); // #c39797console.log(rgbToHex(16, 16, 16)); // #0f0f0f

我们创建了一个可重用的 rgbToHex() 函数来将 RGB 代码转换为其等效的十六进制代码。

我们使用 padToTwo() 函数将十六进制代码填充为两位数,例如 f -> 0f。

在将 R、G 和 B 的十进制值转换为十六进制表示后,我们将它们连接到一个以 # 字符为前缀的字符串中,以形成十六进制颜色代码。

我们可以修改该函数以使其也接受 RGBA 值,其中 A 是用于指定颜色不透明度的百分比值(介于 0 和 1 之间)。 A 将是十六进制颜色代码的前两个字符,其值介于 00(0 或 0%)和 ff(255 或 100%)之间。

function decToHex(dec) {return dec.toString(16);
}function padToTwo(str) {return str.padStart(2);
}function rgbToHex(r, g, b, a) {const hexR = padToTwo(decToHex(r));const hexG = padToTwo(decToHex(g));const hexB = padToTwo(decToHex(b));// Set "a" to 1 if not specifiedconst aAbsolute = Math.round((a ?? 1) * 255);const hexA = padToTwo(decToHex(aAbsolute));return `#${hexA}${hexR}${hexG}${hexB}`;
}console.log(rgbToHex(255, 128, 237)); // #ffff80ed
console.log(rgbToHex(195, 151, 151, 0.5)); // #80c39797
console.log(rgbToHex(16, 16, 16, 0.69)); // #b0101010

JavaScript中如何将十进制转换为十六进制?相关推荐

  1. 如何在JavaScript中将十进制转换为十六进制

    如何在JavaScript中将十进制值转换为等效的十六进制值? #1楼 如果要将数字转换为RGBA颜色值的十六进制表示形式,我发现这是以下几个技巧中最有用的组合: function toHexStri ...

  2. 十六进制转换html,如何使用JavaScript将十进制转换为十六进制?

    JavaScript中有很多内置函数可以帮我们进行数(进)制转换.那么给定一个十进制数字,如何将数字从十进制转换为十六进制?下面本篇文章就来给大家介绍一个使用JavaScript将十进制转换为十六进制 ...

  3. 十进制转换为十六进制-八进制-二进制的进制转换计算

    进制换算在工作中是一项必不可少的技能,例如在RTC中得到的数据为十六进制的,但是我们使用时用的是十进制.这就免不了进行进制之间的换算.进制之间的换算可以手动计算进行换算,也可以编写程序进行换算.这里主 ...

  4. JavaScript | 将十进制转换为十六进制,反之亦然

    Sometimes we need to convert an integer value which is in decimal format to the hexadecimal string i ...

  5. qt中十进制转换为十六进制和二进制字符串,以及二进制字符串转十进制,十六进制字符串

    概述 直接上代码,记录一下,方便日后使用: 示例一 将十进制转换为二进制和十六进制字符串: int num = 23; QString str = QString::number(num,16);// ...

  6. 十进制转换为十六进制(转载过来的)

    要把1610转换成16进制,采用什么方法好?为什么有的是先转换成2进制?具体方法和步骤怎么样? 我来帮他解答 输入内容已经达到长度限制 还能输入9999字 插入图片删除图片插入地图删除地图插入视频视频 ...

  7. 十进制转换为十六进制

    问题: 计算机系统中经常会用到十六进制,那么如何将十六进制转换为十六进制呢? 例如:   十进制123转换为十六进制数为7B,1234转换为十六进制为4D2. 代码实现: public class D ...

  8. java中如何将十进制转换为二进制

    一.进制是什么? 进制也就是进位计数制,是人为定义的带进位的计数方法. 对于任何一种进制-X进制,就表示每一位上的数运算时都是逢X进一位. 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一, ...

  9. Python中ASCII转十六进制、C中BCD转十进制、十六进制学习记录

    ASCII.BCD转十六进制 ASCII转十六进制 转换规则 Python实现 BCD转十进制.十六进制 BCD码的优点 BCD码分类 各种BCD码的特点 转换规则 ASCII转十六进制 转换规则 A ...

最新文章

  1. OpenGL如何处理多个纹理
  2. 部署及配置Lync Server 2013存档功能
  3. MSSQL 判断表是否存在的两种方法
  4. sql无法写入mysql_无法通过写入mysql数据库pandas.to\u sql使用sqlalchemy,但不能通过没有pandas的sqlalchemy...
  5. 一种真正意义上的Session劫持
  6. chrome vue插件_不容错过的 Chrome 插件推荐合集-开发者必备篇
  7. mysql 正则匹配 捕获组_常用正则表达式 捕获组(分组)
  8. html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...
  9. 存储空间的动态分配与释放
  10. 执行cmd并获得结果_用JAVA执行CMD命令备份PG数据库,解决需要口令的问题
  11. UNIX环境高级编程(第2版)第11-17章
  12. 2006技术盘点 多项无线技术被高估
  13. OFDM载波间隔_NBloT上行子载波
  14. 上传图片方法到免费服务器
  15. python | 秦九昭算法详细介绍
  16. android 让应用恢复前台显示_Android将后台应用唤起到前台的方法
  17. 手把手教你用Java获取IP归属地
  18. 【人工智能与信息社会】题库
  19. IOS使用Charts
  20. 数据库DDL、DML分别是什么

热门文章

  1. 一个图帮你解决 @Autowired出现红色波浪线
  2. 2-STM32开发板(Cortex-M3)和exynos4412(Cortex-A9)之间的区别和联系
  3. 从关键字~C语言 — 期末考,考研,面试中那些你不得不知道的C语言关键字细节
  4. Java虚拟机相关知识点
  5. CDMA在卫星移动通信中的应用(转)
  6. 《滚石》评出最伟大100首英文歌(转)
  7. uniapp 支付(vx、zfb、app、内嵌H5)
  8. 导入matlab某两列数据,将文本文件中的数据导入到matlab中一例(wwh)
  9. history`pushState和window`onpopstate实现tab切换效果
  10. 阿里巴巴神马搜索一面