Tal til binært program (array problem)

Tags:    c++

Hej.
Jeg sidder for tiden og prøver at få et program til at omskrive et numerisk tal til et unsigned binært tal. Programmet er i C.

Dette er tanke til hvordan jeg løser problemet

Fold kodeboks ind/udKode 


Mit problem er bare at pbin[0] jo gerne skulle indholde det første tal (altså 1). Men af en eller anden underlig grund indeholder den hele strengen: "01001001".

Er der nogen der kan gennemskue hvordan jeg løser det her?



Indlæg senest redigeret d. 13.12.2010 14:01 af Bruger #5097
5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hej.
Jeg sidder for tiden og prøver at få et program til at omskrive et numerisk tal til et unsigned binært tal. Programmet er i C.

Dette er tanke til hvordan jeg løser problemet

Fold kodeboks ind/udKode 


Mit problem er bare at pbin[0] jo gerne skulle indholde det første tal (altså 1). Men af en eller anden underlig grund indeholder den hele strengen: "01001001".

Er der nogen der kan gennemskue hvordan jeg løser det her?

pbin[0] er det første tegn i strengen. &pbin[0] er så adressen af det første tegn i strengen. En pointer til en streng er det samme som adressen til det første tegn i strengen. Så
&pbin[0] = pbin. Så først siger du det der svarer til:
Fold kodeboks ind/udKode 

osv..

Eller det hvertfald mit gæt.

Det ser også ud til at du vil gange hver efterfølgende værdi med 1, 2, 4, 8? Er det rigtigt? I så fald er (i+1) ikke det rigtige, siden den vil være 1,2,3,4..9



Indlæg senest redigeret d. 13.12.2010 14:19 af Bruger #14645
Okay ja der er nogen problemer med min kode. Det kan jeg godt se. Men vil gerne lige have at min array fungere først.
Men hvad skal jeg så skrive Søren?



Okay ja der er nogen problemer med min kode. Det kan jeg godt se. Men vil gerne lige have at min array fungere først.
Men hvad skal jeg så skrive Søren?


Du skal evaluere hvert tegn for sig. Noget i stil med (ikke testet):
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 13.12.2010 17:00 af Bruger #2695
Beklager skulle lige hjem.

Nå nu nåede Robert det lige før mig.
Fold kodeboks ind/udKode 


atoi kan ikke bruges fordi den forventer en streng og vil læse i hukommelsen indtil næste nulbyte '\0'. I stedet udtages et tegn og dens ascii værdi findes. Så trækkes ascii værdien af 0 (48) fra så '0' er 0 og '1' er 1.

Roberts løsning er mere elegant brug den i stedet :).



Indlæg senest redigeret d. 13.12.2010 17:11 af Bruger #14645
Den her er måske lidt pænere...og testet:
Fold kodeboks ind/udKode 


Den anden virkede også, men indeholdt en ekstra conditional.



t