26. november 2004 - 16:35
Der er
8 kommentarer og 1 løsning
Binær converter
Øhmmm... En binær converter... Hvordan laver jeg sådan en? (C++) Den skal gerne kunne konvertere både tal såvel som bogstaver (tegn, generelt) Jeg er lidt en noob til det her, men jeg er villig til at satse stort på at der er en mulighed hvorpå dette kan lade sig gøre...
Annonceindlæg fra Bazoom
Få styr på gamer computerens hardware
I gaming-verdenen kan det rigtige hardware være forskellen mellem en uforglemmelig spiloplevelse og konstant frustration. Her er hvad du bør overveje.
22. juli 2024
26. november 2004 - 16:39
#1
Hvad vil du have konverteret fra hvilket format og til hvilket format ?
26. november 2004 - 16:43
#2
- nåe ja! - helt almindelige tekst (eller tal) til binær - altså ikke hexadecimal, eller et eller andet andet. Muligvis korte sætninger, men bare enkle bogstaver/tal i første omgang (medmindre det er det samme.)
26. november 2004 - 16:51
#3
Du dividerer taller med 2 (hvis der er tale om et heltal (int)) indtil tallet = 0; modulos (altså resten) fra hver division afgør om der skal stå 0 eller 1. Hvis det er selve koden du har problemer med må du lige sige til :)
26. november 2004 - 16:52
#4
Den her kode kan konvertere fra binær/decimal/hex til binær/decimal/hex: #include <stdio.h> int indec() { int res; printf("Enter decimal: "); scanf("%d",&res); return res; } int inhex() { int res; printf("Enter hexadecimal: "); scanf("%X",&res); return res; } int inbin() { int res,ix; char line[34]; printf("Enter binary: "); scanf("%s",line), ix=0; res = 0; while(line[ix]!='\0') { res = res * 2 + (line[ix]=='1' ? 1 : 0); ix++; } return res; } void outdec(int v) { printf("decimal = %d\n",v); } void outhex(int v) { printf("hexadecimal = %X\n",v); } void outbin(int v) { int i; printf("binary = "); for(i=0;i<sizeof(int)*8;i++) { printf("%d",(v >> (sizeof(int)*8 - i - 1)) & 1); } printf("\n"); } int main() { int v; v = indec(); outdec(v); outhex(v); outbin(v); v = inhex(); outdec(v); outhex(v); outbin(v); v = inbin(); outdec(v); outhex(v); outbin(v); return 0; }
26. november 2004 - 16:54
#5
Lille eksempel: 145 base 2 (binært) = 145 % 2 (rest 1) - 72 % 2 (rest 0) - 36 % 2 (rest 0)... osv altså 145 (base 10) = 100.. (base 2). Char er repræsenteret som tal så du kan bare konvertere til int og bruge samme metode.
26. november 2004 - 16:58
#6
@n1ght, det var mest koden jeg var ude efter. Jeg har nemlig aldrig fattet det system du forklarede ;) @arne, det ser ud til at virke fint... smider du et svar?
26. november 2004 - 17:02
#7
Lol, det svar så jeg ikke n1ght - men det gi'r faktisk mening :p - I have been... Enlightened!
26. november 2004 - 17:03
#8
svar
27. november 2004 - 09:16
#9
Well - der er lige en lille hale ved det svar som n1ghtmr gav - nemlig at han umiddelbart vender alle sine bits forkert: 145 % 2 = 1 (145/2) = 72 % 2 = 0 (72/2) = 36 % 2 = 0 (36/2) = 18 % 2 = 0 (18/2) = 9 % 2 = 1 (9/2) = 4 % 2 = 0 (4/2) = 2 % 2 = 0 (2/2) = 1 % 2 = 1 145(base 10) er så : 10010001 (base 2) (og ikke 10001001 - som er den opfattelse man kunne få fra n1ghtmr's kommentar). - Princippet er rigtigt, der er blot en "ekstra" detalje.
Kurser inden for grundlæggende programmering