2016-02-19 2 views
0

Я делаю один проект в mvc. У меня есть флажки для чтения и записи и 2 идентификатора. из формы i будут получать данные в следующем формате. я получу Int perm_id, читать значения я буду получать в виде массива Int например Int [] читать = {тысячи триста сорок пяти}, INT [] написать = {1235}не удалось отобразить данные в требуемом формате в проекте mvc

per_id  read write 
    1  1  1 
    1    2 
    1  3  3 
    1  4  
    1  5  5 

    1  7  7 

Здесь разрешения идентификатор же. При чтении есть значение 1, которое означает, что соответствующий флажок установлен. В первом столбце под записью есть значение 1, поэтому соответствующий флажок установлен. Во второй строке справа есть null, поэтому соответствующий флажок не отмечен снова, после этого появляется значение 2, поэтому снова установлен соответствующий флажок. в 6-й строке оба флажка сняты, так что чтение и запись равны нулю. Теперь я хочу сделать приведенные выше данные следующим образом.

scrn_id perm_id  read  write 
    1   1  True  true 
    2   1  false true 
    3   1  true  true 
    4   1  true  false 
    5   1  true  true 
    7   1  true  true 

Это необходимый формат для сохранения в базе данных. я пытался во многих отношениях с последних дней, но iam не смог сохранить данные в требуемом формате. Есть ли кто-нибудь, кто может решить эту проблему. Заранее спасибо.

ответ

0

Кажется, хорошее место для битмаски:

#include <stdio.h> 

#define BIT(n) (1U << (n)) 

int main(void) 
{ 
    unsigned rarr[] = {1, 3, 4, 5}; 
    unsigned warr[] = {1, 2, 4, 5}; 
    unsigned r = 0; 
    unsigned w = 0; 
    size_t i, n; 

    n = sizeof rarr/sizeof rarr[0]; 
    for (i = 0; i < n; i++) { 
     r |= BIT(rarr[i]); 
    } 
    n = sizeof warr/sizeof warr[0]; 
    for (i = 0; i < n; i++) { 
     w |= BIT(warr[i]); 
    } 
    printf("n read write\n"); 
    for (n = 1; n <= 5; n++) { 
     printf("%zu %-5s %-5s\n", n, 
       r & BIT(n) ? "True" : "False", 
       w & BIT(n) ? "True" : "False" 
     ); 
    } 
    return 0; 
} 

Выход:

n read write 
1 True True 
2 False True 
3 True False 
4 True True 
5 True True 
+0

большую логику. Могу ли я реализовать то же самое в C#? –

+0

Да: http://www.dotnetperls.com/and –

+0

Я получу массив как int [] read = {1,3,4,5}, так как писать ниже код? r | = BIT (1); r | = BIT (3); r | = BIT (4); r | = BIT (5); –

Смежные вопросы