Oprettet ons. d. 15. august 2012 kl. 11:56:01

simpa
simpa (2.660 point. Point ude: 90)
www.simpa.dk

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 :)

Skrevet ons. d. 15. august 2012 kl. 12:36:36| #1

buzzzz
buzzzz (53.608 point)
ifyoudo.net
Øhhh, men synes ikke rigtig du har beskrevet problemet?

Er det at få VB koden lavet om til C#?

Skrevet ons. d. 15. august 2012 kl. 12:47:13| #2

simpa
simpa (2.660 point)
www.simpa.dk
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/ (...)

Skrevet tor. d. 16. august 2012 kl. 15:11:46| #3

simpa
simpa (2.660 point)
www.simpa.dk
Så har du et forslag???

Skrevet tor. d. 16. august 2012 kl. 16:54:24| #4

simpa
simpa (2.660 point)
www.simpa.dk
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;
    }

Skrevet tor. d. 30. august 2012 kl. 00:31:20| #5


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Mine float værdier mister '.' når jeg læser tal i dem

Oprettet den 23. maj 2013 kl. 22.56
CodingJoe giver 30 point for svar | Giv et svar »

Redigere appconfig settings fra web.config i runtime

Oprettet den 22. maj 2013 kl. 14.41
lasserasch giver 60 point for svar | Giv et svar »

Extension methods med constraint på interface

Oprettet den 18. maj 2013 kl. 19.26
CodingJoe giver 30 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Fem smarte funktioner i din Mac som du sikkert ikke kender

Her har du fem muligheder for at tweake din Mac på en fed måde.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Ny opfindelse: Oplad din mobil på 20 sekunder

Måske er det snart slut med at lade mobilen op hver aften. Med ny opfindelse kan telefonen få fuld energi på sølle 20 sekunder.


Nyheder fra Computerworld

Teaser billede

Galleri: De 10 vildeste datacentre i verden

I en gammel kirke, i et oppusteligt telt, på nedlagte militæranlæg eller midt i ørkenen. Der er ingen grænser for, hvor man kan banke et datacenter op. Her er de 10 sejeste anlæg i verden. I...


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger