【问题标题】:Getting full hex integer获取完整的十六进制整数
【发布时间】:2021-04-12 17:51:27
【问题描述】:

我正在使用 parseInt 将十六进制代码转换为 16 字节,颜色编号

parseInt('ef7f31', 16) // 15695665

上述输出15695665 是预期的。 当十六进制的 RGB 部分全部为零时,问题就出现了,然后它会缩短它。例如这个颜色#0098d9。

parseInt('0098d9', 16) // 39129

上例中的十六进制以红色全为零,这使得输出为39129。如果我像(39129).toString(16) 那样将该输出转换回十六进制,它会返回98d9,并且一开始就没有零。我可以添加零,但可能不知道哪个位置

所以我的问题是,如何在将十六进制转换为整数后让它显示完整的数字

【问题讨论】:

    标签: javascript colors hex


    【解决方案1】:

    一种方法是使用String.prototype.padStart()

    (39129).toString(16).padStart(6,"0")
    //"0098d9"
    

    由于只有 MSB 端的零会被忽略,因此在转换回十六进制字符串时填充前导零足以恢复 RGB 表示。

    或者您可能希望采用更系统的方法,例如分别存储 RGB 值,并在转换回十六进制字符串时将它们连接起来。

    【讨论】:

    • 这完全回答了我的问题,但是是否有可能使 int 值本身(39129)成为计算零的全长,所以我不必在转换回十六进制后添加零?例如,如果我要将其发送到 API,他们将 int 转换回 hex,但不为我添加 pad
    • @EcksDee 我认为这是不可能的,因为类型的大小对于特定语言是固定的。对于 Javascript 中的Number,它是一个 64 位浮点 IEEE 754 数。对于您提到的情况,如果该 API 是为颜色设计的,它应该实现一个适当的方案来解释整数。如果它是通用 API,那么您有责任处理数据的解析。
    猜你喜欢
    • 2011-04-26
    • 1970-01-01
    • 2010-10-16
    • 2011-07-12
    • 2015-08-17
    • 2021-09-29
    • 2016-07-29
    相关资源
    最近更新 更多