Avatar billede simpa Nybegynder
15. august 2012 - 11:56 Der er 4 kommentarer og
1 løsning

Beregning af kontrolcifre af FI 71 kort i C#

Jeg har bøvlet med at få kontrolcifre udregnet til FI 71 kort

nu har jeg en function:

function modulus($t) {
    $t=str_pad($t, 14, 0, STR_PAD_LEFT);
    $v=1;
    $s=0;
    for ($i=0;$i<14;$i++) {
        $r=$v*$t[$i];
        if ($r>9) $r=$r-9;
        $s+=$r;
        $v=$v==1?2:1;
    }
    return $t.fmod(10-fmod($s,10),10);
}

Lidt VB eksempel

dim b_id_str as string

b_id_str = "1318465"
b_id_str = b_id_str.ToString().PadLeft(14, "0"c)

dim b_id as integer()
b_id = new integer(){0,0,0,0,0,0,0,0,0,0,0,0,0,0}

dim w as integer()
w = new integer(){1,2,1,2,1,2,1,2,1,2,1,2,1,2}

dim i as integer
dim s as integer
dim tmp as integer

for i = 0 to b_id.Length - 1
b_id(i) = Convert.ToInt32(b_id_str.SubString(i,1))
next i

s = 0

for i = 0 to b_id.Length - 1
tmp = b_id(i) * w(i)
if tmp > 9 then tmp = tmp - 9
s = s + tmp
next i

s = s mod 10
if s > 0 then s = 10 - s

Console.Write(s.ToString())


Men jeg vil gerne have koden om til C# sådan at jeg kan Smide det på en side hvor jeg kan sende tal med som parameter og få controlcifre mod udregningen tilbage i En HttpWebRequest... Dette vil jeg gerne gøre enten på en site eller webservice som kan kaldes fra hvor som helst. Også en metode der returnerer boolsk hvis den allerede udregnede controlcifre er gyldig eller ej...

På forhånd tak :)
Avatar billede Syska Mester
15. august 2012 - 12:36 #1
Øhhh, men synes ikke rigtig du har beskrevet problemet?

Er det at få VB koden lavet om til C#?
Avatar billede simpa Nybegynder
15. august 2012 - 12:47 #2
Problemmet er at koden som det er nu er ikke helt optimalt det skal optimeres... sådan at hvis jeg sender kun et tal som skal udregnes kontrolcifre på så returnerer det kontrolcifrene og eller hvis man sender det udregnede kontrolcifre så skal der returneres bool om det nu er korrekt udregnet...

ved godt jeg kan få koden convertet her http://www.developerfusion.com/tools/convert/vb-to-csharp/
Avatar billede simpa Nybegynder
16. august 2012 - 15:11 #3
Så har du et forslag???
Avatar billede simpa Nybegynder
16. august 2012 - 16:54 #4
ok fandt ud af det:

public static string BeregnFiKortKontrolCifre(string b_id_str)
    {
        b_id_str = b_id_str.ToString().PadLeft(14, '0');

        int[] b_id = null;
        b_id = new int[] {    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0 };

        int[] w = null;
        w = new int[] {    1,    2,    1,    2,    1,    2,    1,    2,    1,    2,    1,    2,    1,    2 };

        int i = 0;
        int s = 0;
        int tmp = 0;

        for (i = 0; i <= b_id.Length - 1; i++)
        {
            b_id[i] = Convert.ToInt32(b_id_str.Substring(i, 1));
        }

        s = 0;

        for (i = 0; i <= b_id.Length - 1; i++)
        {
            tmp = b_id[i] * w[i];
            if (tmp > 9)
                tmp = tmp - 9;
            s = s + tmp;
        }

        s = s % 10;
        if (s > 0)
            s = 10 - s;

        return s.ToString();
    }

//Forklaring : id 1 = metoden returnerer 8 = kontrolcifre = 18

public static bool KontrollerFiKortKontrolCifre(string k_id_str)
    {
        string temp_k_id_str = k_id_str.Substring(k_id_str.Length-1, 1);
        string temp_id_str = k_id_str.Substring(0, k_id_str.Length - 1);

        if (k_id_str == temp_id_str + (BeregnFiKortKontrolCifre(temp_id_str)))
          return true;
      else return false;
    }
Avatar billede simpa Nybegynder
30. august 2012 - 00:31 #5
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester