Битовая сумма id
Всем привет.
Подключаюсь к одной апишке и есть такая тема - есть пост запрос с формы - в форме есть мультиселект - Тип кузова - отправлять нужно id кузовов - но не в массиве а битовую сумму id кузовов и тип int64 Что это значит и зачем так сделано, почему не массив? |
Цитата:
Цитата:
PS. Я могу и ошибаться, но скорее вы не так трактуете задачу и речь идет не о сумме бит, а побитовом ИЛИ, то есть сложении. При этом значения списка, это не id, а значения поля типа SET, которые представляют бит с шагом степени 2, то есть 1, 2, 4, 8, .... К примеру если будут выбраны 2 и 3 опции, то результат будет: 0010 0100 ------ 0110 = 6 что и требуется для записи в базу. |
laimas,
id - обычное число - например 1, 2, 54, 63 и даже такие 131072 - это чисто их внутренний учет айдишек. Вот несколько таких значений нужно отправлять, или одно значение если выбран один тип кузова. |
Цитата:
Например, в базе будет так 1 - Первый 2 - Второй ...... Также хранится и ENUM, но в нем можно выбрать одно значение из множества, а в SET многое из множества, поэтому и сумма. Сделайте побитое ИЛИ над значениями выбранных опций, получится то, что требуется. |
если там тип int то значит сложить их вместе
|
Цитата:
var sum = [...document.querySelectorAll('[selected]')].reduce((a, b) => a | b.value, 0) нежели var sum = [...document.querySelectorAll('[selected]')].reduce((a, b) => a += +b.value, 0) |
Vlasenko Fedor,
int64 - и в описании просто написано без примера - Битовая сумма id кузовов а сложить вместе тоже есть такое поле - тип загрузки вот там тип int Вот его описание из документации Битовая сумма id типов загрузки. Например: только "Верхняя" будет иметь значение 1; "Верхняя", "Боковая" и "Со снятием стоек" имеют значение 67 (1 + 2 + 64) Вот там айдишки идут - 1 2 4 8 16 32 64 128 и т.д |
Впрочем в типе кузова то же самое, сразу не обратил внимание - они просто перемешанные.
|
Цитата:
http://www.mysql.ru/docs/man/SET.html А битовая сумма, это сумма бит в числе, есть такое понятие, посмотреть можно например тут https://neerc.ifmo.ru/wiki/index.php...ераци - Подсчет количества единичных битов |
Цитата:
|
Цитата:
|
Цитата:
смысл не в этом, смыл хранить значения характеристик одним числом обычным интом в базе. так делают с фильтрами, поиском по ним используя битовые операции в базе |
Цитата:
|
Vlasenko Fedor,
laimas, спасибо за подсказки, с меня + в карму. как оказалось и в типе кузова и в типе загрузки нужна просто сумма id. То что они делают побитово в бд это уже их проблемы - зачем они это прописали в апи для фронта хз. Да и сама документация к апи на коленке написана. |
Цитата:
|
Цитата:
|
Цитата:
alert(Math.log(Number.MAX_SAFE_INTEGER) / Math.log(2));Если же говорить про целые числа, то в них можно описать сколь угодно сложные маски — например, одна 256-битная маска может описывать все типы в форме, свойства товара и пр. |
О битовой маске можно вести речь в контексте операций с множеством - выборка, поиск, фильтрация. А сумма значений, это просто набор выбранных значений множества.
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 20:42. |