Javascript 将十进制转换为十六进制不适用于8020224

Javascript 将十进制转换为十六进制不适用于8020224,javascript,Javascript,好的,问题是我用这个函数尝试过的其他代码可以很好地工作,但是由于某种原因,输入这个特定的十进制代码不起作用 然而,首先让我给你当前的代码,我必须反驳这一点 function hexlify(num) { const bs = num.toString(16); // rearrange because CSS hex str are yolo. return '#' + (bs.substr(4, 2) + bs.substr(2, 2) + bs.substr(0, 2

好的,问题是我用这个函数尝试过的其他代码可以很好地工作,但是由于某种原因,输入这个特定的十进制代码不起作用

然而,首先让我给你当前的代码,我必须反驳这一点

function hexlify(num) {
    const bs = num.toString(16);
    // rearrange because CSS hex str are yolo.
    return '#' + (bs.substr(4, 2) + bs.substr(2, 2) + bs.substr(0, 2)).padStart(6, '0');
}
这是我的一个朋友给我的一个代码,尽管我没能问他为什么需要重新排列它们,而其他人则不需要。那么,有人能给我解释一下为什么需要重新排列它吗?就像我见过的其他代码一样:

let hexString = yourNumber.toString(16);
if (hexString.length % 2) {
  hexString = '0' + hexString;
}
这是我从其他问题中发现的。它是有效的,直到我输入十进制数:8020224


输出给我:
#7A6200
而不是
#00627A

所以问题再次是,为什么会发生这种情况。我给出的每一个十进制数都很好,这里只是一个简短的列表

  • 65535
  • 5329233
  • 4802889


您提供的第二段代码在提供
8020224
作为输入时返回
7a6100
,这是正确的


您期望的输出
00627A
,对应于十进制值
25210
您提供的第二段代码在提供
8020224
时返回
7a6100
,这是正确的


您所期望的输出
00627A
,对应于十进制值
25210

,好的,因此我可以向我的朋友询问这一点,他回答如下:

一些图形API和工具包等,飞行标准可能很喜欢,使用十六进制颜色,字节顺序为:#aabbggrr。这种习俗一直在持续下去。这样,颜色(R:255、G:0、B:127、A:6)将变成:#067f00ff

CSS和Photoshop以及。。。另一方面,使用排序:#aarrggbb(蓝色和红色切换),因此我们必须简单地切换十六进制输出中的这两个字节,以便画布根据需要解析CSS颜色


因此,我认为十进制到十六进制的转换不一定是“不正确的”,它只是不是我正在寻找的十六进制。我想这就解开了这个谜。(至少对我来说)

好吧,我可以问我的朋友这件事,他回答说:

一些图形API和工具包等,飞行标准可能很喜欢,使用十六进制颜色,字节顺序为:#aabbggrr。这种习俗一直在持续下去。这样,颜色(R:255、G:0、B:127、A:6)将变成:#067f00ff

CSS和Photoshop以及。。。另一方面,使用排序:#aarrggbb(蓝色和红色切换),因此我们必须简单地切换十六进制输出中的这两个字节,以便画布根据需要解析CSS颜色


因此,我认为十进制到十六进制的转换不一定是“不正确的”,它只是不是我正在寻找的十六进制。我想这就解开了这个谜。(至少对我来说)

为什么正确答案应该是
00627A
?即
25210
base10(即
(6*16**3)+(2*16**2)+(7*16)+(10)
),您熟悉吗?
hexlify
函数的行为似乎类似于little endianness,输入数字是根据
(绿色*65535)+(蓝色*255)+红色
@JonathanLonowski计算得出的,看起来是这样,但我今天得到了答案。显然是格式
aaggbbrr
。不确定这是否与您正在谈论的内容相同。如果您使用
0x123456
调用它,并检查是否得到
#123456
返回,则测试会更容易。为什么正确答案应该是
00627A
?即
25210
base10(即
(6*16**3)+(2*16**2)+(7*16)+(10)
),您熟悉吗?
hexlify
函数的行为似乎类似于little endianness,输入数字是根据
(绿色*65535)+(蓝色*255)+红色
@JonathanLonowski计算得出的,看起来是这样,但我今天得到了答案。显然是格式
aaggbbrr
。不确定这是否与您正在谈论的内容相同。如果您使用
0x123456
调用它,并检查是否得到
123456
返回,则测试会更容易。