Преобразование% цвета RGB в число с плавающей запятой - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь преобразовать цвета RGB в формат ASE, и я почти закончил, но последняя часть не работает должным образом. Проблема в том, что преобразование каждого цвета rgb в числа с плавающей запятой неточно, и я понятия не имею, конвертирую ли я просто неправильно или что-то упускаю.

ПРИМЕР: 0,1 до HEX должно быть ~ 0x3dcccccd , но моя программа возвращает 0x3de66666

  for (let j = 0; j < 3; j++){
            // 0.1 is there just for testing purposes, otherwise there should be % of one rgb color
            let binary = (0.1).toString(2).slice(2);

            // finding exponent
            let idx = -1;
            for (let i = 0; i < binary.length; i++){
                if (binary[i] === '1') break;
                else idx--;
            }

            // moving binary string, so '1' is at start
            binary = binary.slice(Math.abs(idx+1), 23 + Math.abs(idx+1));

            // getting bias and converting it into binary
            let bias = (127+idx).toString(2);

            // there is the final hex format
            let s = (parseInt(bias + binary , 2)).toString(16);

            // adding color to the final ase file
            let color8Byte = swapEndian(parseInt(s, 16));
            tempArr[tempArr.length+(j-4)] = color8Byte;
        }

FIX: Я случайно добавил еще один 1 в мантису в строке 14.

binary = binary.slice(Math.abs(idx), 23 + Math.abs(idx));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...