Хорошо, проблема в том, что другие коды, которые я пробовал с этой функцией, работают нормально, но по какой-то причине установка этого конкретного десятичного кода не работает.
Однако сначала позвольте мне дать вам текущий код, который я должен противопоставить этому.
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;
}
Что я нашел из других вопросов StackOverflow. Работает, пока, конечно, не поставлю десятичную дробь: 8020224.
Вывод дает мне: #7A6200 вместо #00627A.
Итак, вопрос еще раз в том, ЗАЧЕМ именно это происходит. Все остальные десятичные дроби, которые я дал, отлично работают, вот лишь краткий список.
Вы знакомы с порядок байтов? Функция hexlify, похоже, ведет себя так же, как и с прямым порядком байтов, с входным числом, вычисленным из (green * 65535) + (blue * 255) + red.
@JonathanLonowski Вроде так, но сегодня я получил ответ. Видимо это формат aaggbbrr. Не уверен, что это то же самое, о чем вы говорите.
Это было бы легче проверить, если бы вы вызвали его с помощью 0x123456 и проверили, что вы получили обратно #123456.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Второй предоставленный вами фрагмент кода возвращает 7a6100, если в качестве входных данных указан 8020224, что является правильным.
Ожидаемый результат 00627A соответствует десятичному значению 25210.
Хорошо, я смог спросить об этом своего друга, и он ответил так:
Some graphics APIs and toolkits and whatnot, which the flight standard probably is keen on, use hex colors where the byte ordering is: #aabbggrr. This sort of convention has been going on forever. With this, the color (R: 255, G:0, B: 127, A: 6) would turn out to be: #067f00ff.
CSS and Photoshop and ... on the other hand use ordering: #aarrggbb (blue and red switched), so we've got to simply switch those two bytes in the hex output in order for the canvas to parse the CSS color as what we're desiring.
Так что я полагаю, что преобразование десятичного числа в шестнадцатеричное не обязательно было «неправильным», это было просто не то шестнадцатеричное, которое я искал. Думаю, это решает эту загадку. (по крайней мере для меня)
Почему правильный ответ должен быть
00627A? то есть25210с основанием 10 (т.е.(6 * 16**3) + (2 * 16**2) + (7 * 16) + (10)).