Преобразование десятичного числа в шестнадцатеричное не работает для 8020224

Хорошо, проблема в том, что другие коды, которые я пробовал с этой функцией, работают нормально, но по какой-то причине установка этого конкретного десятичного кода не работает.

Однако сначала позвольте мне дать вам текущий код, который я должен противопоставить этому.

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.

Итак, вопрос еще раз в том, ЗАЧЕМ именно это происходит. Все остальные десятичные дроби, которые я дал, отлично работают, вот лишь краткий список.

  • 65535
  • 5329233
  • 4802889
  • ...

Почему правильный ответ должен быть 00627A? то есть 25210 с основанием 10 (т.е. (6 * 16**3) + (2 * 16**2) + (7 * 16) + (10)).

Mark 07.01.2019 06:56

Вы знакомы с порядок байтов? Функция hexlify, похоже, ведет себя так же, как и с прямым порядком байтов, с входным числом, вычисленным из (green * 65535) + (blue * 255) + red.

Jonathan Lonowski 07.01.2019 07:16

@JonathanLonowski Вроде так, но сегодня я получил ответ. Видимо это формат aaggbbrr. Не уверен, что это то же самое, о чем вы говорите.

RepeaterCreeper 07.01.2019 17:53

Это было бы легче проверить, если бы вы вызвали его с помощью 0x123456 и проверили, что вы получили обратно #123456.

tadman 07.01.2019 17:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Второй предоставленный вами фрагмент кода возвращает 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.

Так что я полагаю, что преобразование десятичного числа в шестнадцатеричное не обязательно было «неправильным», это было просто не то шестнадцатеричное, которое я искал. Думаю, это решает эту загадку. (по крайней мере для меня)

Другие вопросы по теме