Ответ
Misha v.3 14.03.2013 07:56
/ 14.03.2013 12:43
тут вообще не нужны двоичные числа.
тут подойдут обычные числа.
без разницы, что будет лежать в mysql: строка с двоичным представлением числа 5 (0b101) или само число 5.
работайте с битами на здоровье, но смысла конвертировать числа в 10101010 и обратно -- нет.
ваши комплектующие будут иметь значения 1, 2, 4, 8, 16 итд (попробуйте перевести эти числа в двоичный вид в калькуляторе).
формироваться значение будет так:
$h[^accessories.hash[value]]
$value(0)
^form:tables.acc.menu{
^value.inc(^h.[$form:tables.acc.field].value.int(0))
}
в БД пишите/читаете $value.
проверить, отмечена данная опция можно с помощью битовой операции И (&): ^if($value & 16){отмечана опция со значением 16}
P.S. кстати самое правильное решение -- это как раз доп. таблица, куда будут записываться связи. измените ваш подход и как можно раньше перейдите на такую реализацию. ваш случай -- не тот, где стоит использовать биты
P.P.S любой символ в строке можно получить так: ^строка.mid(pos;1)