Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2020, 16:41
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

Битовая сумма id
Всем привет.
Подключаюсь к одной апишке и есть такая тема - есть пост запрос с формы - в форме есть мультиселект - Тип кузова - отправлять нужно id кузовов - но не в массиве а битовую сумму id кузовов и тип int64
Что это значит и зачем так сделано, почему не массив?
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2020, 17:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Bond
Что это значит
Нахождение суммы битов числа (одного). Например, 45 = 101101 = 4 бита в числе.

Сообщение от Bond
зачем так сделано, почему не массив?
Трудно сказать зачем, а тем более для множества значений. Что из себя представляют эти id, можете их перечислить?

PS. Я могу и ошибаться, но скорее вы не так трактуете задачу и речь идет не о сумме бит, а побитовом ИЛИ, то есть сложении. При этом значения списка, это не id, а значения поля типа SET, которые представляют бит с шагом степени 2, то есть 1, 2, 4, 8, .... К примеру если будут выбраны 2 и 3 опции, то результат будет:

0010
0100
------
0110 = 6

что и требуется для записи в базу.

Последний раз редактировалось laimas, 28.05.2020 в 20:49.
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2020, 17:30
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

laimas,
id - обычное число - например 1, 2, 54, 63 и даже такие 131072 - это чисто их внутренний учет айдишек. Вот несколько таких значений нужно отправлять, или одно значение если выбран один тип кузова.
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2020, 17:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Bond
id - обычное число - например 1, 2, 54, 63
Я был прав, смотрите посткриптум. Это SET, в базе он хранится как строки, а во внутреннем представлении это числа. 64 разряда, это максимальное что может быть для этой разрядности, то есть 64 значения.

Например, в базе будет так

1 - Первый
2 - Второй
......

Также хранится и ENUM, но в нем можно выбрать одно значение из множества, а в SET многое из множества, поэтому и сумма. Сделайте побитое ИЛИ над значениями выбранных опций, получится то, что требуется.
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2020, 17:57
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

если там тип int то значит сложить их вместе
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2020, 18:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Vlasenko Fedor
если там тип 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)

Последний раз редактировалось laimas, 28.05.2020 в 18:13.
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2020, 18:11
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

Vlasenko Fedor,
int64 - и в описании просто написано без примера - Битовая сумма id кузовов
а сложить вместе тоже есть такое поле - тип загрузки вот там тип int
Вот его описание из документации
Битовая сумма id типов загрузки. Например: только "Верхняя" будет иметь значение 1; "Верхняя", "Боковая" и "Со снятием стоек" имеют значение 67 (1 + 2 + 64)
Вот там айдишки идут - 1 2 4 8 16 32 64 128 и т.д
Ответить с цитированием
  #8 (permalink)  
Старый 28.05.2020, 18:15
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

Впрочем в типе кузова то же самое, сразу не обратил внимание - они просто перемешанные.
Ответить с цитированием
  #9 (permalink)  
Старый 28.05.2020, 18:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Bond
Битовая сумма id типов загрузки. Например: только "Верхняя" будет иметь значение 1; "Верхняя", "Боковая" и "Со снятием стоек" имеют значение 67 (1 + 2 + 64)
Это не битовая сумма, это сумма всех значений. Например, чтобы получить из базы не "Верхняя", "Боковая" и "Со снятием стоек", а сумму их, то в запросе к базе делают так: field_name+0. Если же нужно текстовое, то field_name.

http://www.mysql.ru/docs/man/SET.html

А битовая сумма, это сумма бит в числе, есть такое понятие, посмотреть можно например тут https://neerc.ifmo.ru/wiki/index.php...ераци - Подсчет количества единичных битов
Ответить с цитированием
  #10 (permalink)  
Старый 28.05.2020, 18:33
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

Сообщение от laimas
Это не битовая сумма
Да, но это я цитировал описание из документации этого АПИ.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
checkbox + финальная сумма в конце списка S3inc jQuery 1 10.10.2019 08:40
Сумма баланса игроков Eron Общие вопросы Javascript 1 28.10.2018 23:28
Массив из значений чекбоксов,максимальное значение и сумма результата с др. значе-ями Евгенион Общие вопросы Javascript 5 23.10.2017 07:44
Сумма в каждой колонке WestMare Общие вопросы Javascript 0 10.06.2017 13:40
Почему не работает вместе сумма двух инпутов и динамическое изменение одного из инпут drkrol jQuery 1 02.04.2016 22:14