Hvordan konverterer jeg BCD til desimal Visual Basic?

Binary Coded Desimalverdier bruke et binært mønster til å representere tallene null til ni. Som Visual Basic ikke bruker BCD datatype, betyr det ikke har en innebygd funksjon som konverterer BCD verdier til desimaltall. Men du kan programmere din egen funksjon som vil akseptere innspill formatert som en BCD verdi og dele det opp i fire-bits nibbles, eller biter, og deretter konvertere disse nibbles til et desimaltall.

Bruksanvisning

1 Skriv "Public Function BCD_to_int (ByVal inngang Som Long)" for å åpne din funksjon. Bruk en mindre numerisk datatype i stedet for Long å spare plass hvis du vet at programmet vil ikke jobbe med store tall.

2 Skriv "Dim temp As Integer" og "Dim decNum som Integer" å erklære to heltall i funksjon. Skriv "Dim strNum som String =" "" for å erklære en streng og initialisere den uten tekst.

3 Skriv "Mens Not num = 0" for å åpne en While løkke som vil gjenta inntil antallet funksjonen mottar blir null. Skriv "For i = 0 til 3" på neste linje for å begynne et telles loop.

4 Type "temp = num Mod 10" og "num / = 10" på neste linje. Den første linjen vil isolere lengst til høyre sifferet i BCD nummer og lagre den i "temp" variable. Den neste linjen vil skifte desimaltegnet av BCD tallet til venstre.

5 Skriv "Hvis temp = 1 Deretter" for å åpne en betinget sjekk som avgjør om programmet må legge til verdien av desimaltall. Siden du trenger bare å legge til når "temp" er lik en, inkluderer ikke en "elseif" klausul for temp lik null.

6 Skriv inn følgende kode i "hvis" statement:

Hvis temp = 1 Deretter

Hvis jeg = 0 Then

decNum += 1

ElseIf i = 1 Deretter

decNum += 2

ElseIf i = 2 Da

decNum += 4

ElseIf i = 3 Da

decNum += 8

Slutt om

Slutt om

Disse forholdene legge den aktuelle desimal verdien til totalsummen din basert på hvilken av de fire biter i hver bite den sjekker. Den "decNum" variabel vil holde desimal verdien av de fire-bit småspise.

7 Skriv "Neste i" på neste linje for å fortelle din "For" sløyfe for å gå til neste siffer i småspise. Når programmet har sjekket alle fire biter, vil det ha beregnet den neste sifferet i desimal. Skriv "strNum = decNum & strNum" for å legge denne verdien til venstre side av strengen. Skriv "decNum = 0" for å nullstille denne variabelen før den neste iterasjon av mens loop.

8 Skriv "End Mens" for å lukke mens loop. Type "decNum = strNum" å tvinge Visual Basic for å konvertere strengen holder din desimal verdi i en Integer og lagre det i "decNum" variable. Du kan deretter manipulere denne variabelen som trengs. Skriv "Return decNum" for å sende desimal verdi tilbake til der programmet kalles funksjon fra. Skriv "End Function" for å lukke funksjon.

Hint

  • BCD tallene har åtte biter. "0000 0000" representerer null og "0000 1001" representerer ni. Siden de fire venstre-de fleste bitene er null, trenger du ikke å vurdere dem i programmet. Dette sparer plass i minnet, og lar deg ta imot større inngangs tall. Hvis du vil ha åtte bits verdier for input, endre "For" løkke til "For i = 0 til 7" for å håndtere den ekstra belastningen.