Omregning fra decimalsystem til hexadecimalsystem

Tags:    atmel studio decimal omregne hexadecimal

Hej allesammen!
Jeg er lige blevet introduceret for programmering, hvor jeg skal lave et program, hvor jeg skal indtaste et tal i decimalsystem (input) og jeg skulle så gerne få samme decimaltal ud OG det tilsvarende hexadecimale-tal. Opgaven siger at jeg skal bruge BasicIO-skabelonen i Atmel Studio til at lave programmet. Skabelonen ser ud som følger:

#define F_CPU 16000000UL

#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include "usart.h"

int main(void) {

uart_init(); // open the communication to the microcontroller
io_redirect(); // redirect input and output to the uart

int input = 0;

while(1) {

printf("Input a number\n");
scanf("%d", &input);
printf("You wrote %d\n", input);
}

return 0;
}

Håber nogen kan vejlede mig til hvordan jeg kommer i gang med denne program, for jeg ved virkelig ikke noget om programmering indtil videre :-)



5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Den nemme løsning vil være at lave et kald til scanf(), hvor du specificerer, at det du tager i mod fra stdin, vil blive omkonverteret til hexadecimaler.

Med udgangspunkt i din skabelon, kan det gøres med få rettelser:

Fold kodeboks ind/udC++ kode 


Hvis du skal gå mere teoretisk til værks, så skal du kigge på bl.a. modulus/divisions operatorerne.



Indlæg senest redigeret d. 17.09.2014 19:15 af Bruger #18836
Der er lige et par ting jeg skal have styr på her:

1)
så vidt jeg kan se, har du sat %x sammen med min input i Scanf. Så vidt jeg ved benyttes %x hvis man vil skrive i hexadecimal. Men det var min output som skulle være i hexa, og min input i decimal. Eller har jeg misforstået noget?

2)
Formålet med programmet er at når jeg skriver et decimaltal (input), så skal jeg have et output bestående af samm decimaltal i decimal og den tilsvarende hex. Siden der i den 2. printf kun står x, får jeg så ikke kun noget i hex?

3)
Hvad er # i den 2. printf et udtryk for?




Fold kodeboks ind/udC kode 

...vil skrive '2a'



Indlæg senest redigeret d. 18.09.2014 00:36 af Bruger #2695
Kan du uddybe den, Robert?



I en format streng betyder %d "udskriv som decimaltal", %x betyder "udskriv som hexadecimal", %2x betyder "udskriv hexadecimal med bredden to, udfyld med mellemrum", %02x betyder "udskriv hexadecimal med bredden to, udfyld med nuller":

Fold kodeboks ind/udC kode 

...udskriver:
Fold kodeboks ind/udKode 




t