Svyatoslav
Я ещё не дорос чтобы понимать это
Svyatoslav
Svyatoslav
Xaxashutkin
Попробуй разобраться в двоичной системе числения, там не сложно
Хотя для джаваскрипта это почти бесполезные знания
Svyatoslav
Svyatoslav
ЕГЭ как то сдавал же
Svyatoslav
Есть много простых вещей, понимание которых приходит со временем...
А до этого кажется что это невероятно сложно
Xaxashutkin
Ну тогда чего непонятного
Інт32 значит что число имеет 32 бита
Для него возможный диапазон -2,147,483,648 до +2,147,483,647
Твое число вылезло за диапазон и произошло урезание числа
Svyatoslav
А урезание это - 2 ** 32?
Svyatoslav
Видимо да
Svyatoslav
Тогда правильным решением будет
if i > 2**32:
i -= 2 ** 32
Не. Тут какая-то дичь
Svyatoslav
Спасибо
Xaxashutkin
Нет
Урезание это удаление всех битов старше 32го
В чем смысл этой операции мне пока непонятно
Svyatoslav
Ок
Svyatoslav
Просто - 2 ** 32 даёт тот же результат что и << 0
Xaxashutkin
А откуда ты эту операцию взял?
Svyatoslav
Конкретно
Svyatoslav
<< 0?
Xaxashutkin
-2^32
Svyatoslav
-2^32
Подсказали питонщики
Xaxashutkin
А если увеличить число в 10 раз результат тоже будет совпадать
Xaxashutkin
?
Svyatoslav
Надо тестировать
Svyatoslav
Я не уверен что это 100% верное решение
Svyatoslav
Как минимум если число будет 0, то его сделают -4млрд
Svyatoslav
Короче, вот то число на скрине - красный цвет
Svyatoslav
Там где большое число, это выхлоп из сдвига argb
Нужно перевести это число, в то, что js возвращает при << 0, но на питоне
Потому что корректное значение для красного цвета -65536
Svyatoslav
В данном случае сработало простое вычитание... Но как бы это сделать правильно...
Как вариант, перевести в строку битов и обрезать её до длины 32. Но я не уверен что это правильно
Xaxashutkin
Xaxashutkin
ану кинь скрин где это в спеке
Svyatoslav
Svyatoslav
Почти
Svyatoslav
if i > 2 ** 31:
i -= 2 ** 32
Xaxashutkin
блять
Svyatoslav
В либе на js юзали сдвиги.
Xaxashutkin
Xaxashutkin
Xaxashutkin
как же спека?
Svyatoslav
Нахер math pow когда 2 ** 32 работает?
Oleg
и? я не понимаю что ты от меня хочешь. я и говорю, что это не просто вычитание 2**32
Xaxashutkin
Xaxashutkin
Svyatoslav
Почему ты умножаешь на три
Xaxashutkin
Нахер math pow когда 2 ** 32 работает?
короче если ты почитаешь внимательней то там сначала округляют до инт32 а дальше вычитают
для округления до интт32 в пайтоне должны быть отдельные функции
Xaxashutkin
а просто совпаение в твоем случае
Svyatoslav
Теперь верно в любом случае
Svyatoslav
Кроме случая если число меньше 2 ** 32
Xaxashutkin
так это по сути и есть приведение до инт32, когда ты делишь на 2**32
Xaxashutkin
только в пайтоне лучше использовать встроеные методы для приведения типов
Svyatoslav
Конечно лучше. Знать бы еще как они называются, или хотя бы как это гуглить
Svyatoslav
int 32 python дает вообще головокружительные ответы
Xaxashutkin
а с какого типа ты приводить хочешь?
как тебе данные придут, строкой?
Svyatoslav
сдвигами
Svyatoslav
но 4294901760 не валидное значение для цвета.
Xaxashutkin
понял
Xaxashutkin
щас придумаем
Svyatoslav
Svyatoslav
когда же тг научится ограничивать длину ника...
Xaxashutkin
А ты уверен что тебе нужно именно rgba а не rgb?
потому что ргба это не только цвет но и альфа канал, что часто выносять в отдельное свойство от цвета
Svyatoslav
Svyatoslav
там если даже альфа не указана, в либе ее специально дописывают
Svyatoslav
И потом - 65*** корректно распознается, значит все правильно
Xaxashutkin
а либа пайтоновская? или джс?
Xaxashutkin
да, распознается, но тот ли это цвет
Xaxashutkin
и задействован ли там альфа канал
Svyatoslav
Svyatoslav
тот
255, 0, 0, 255 это красный
Svyatoslav
Svyatoslav
завтра протестирую
Xaxashutkin
я знаю что тебе нужно делать но не знаю как
тебе нужно превратить беззнаковый тип в знаковый
Svyatoslav
Svyatoslav