Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
NUFAN Član


Pridružen-a: Pon 05 Apr 2004 21:39 Prispevkov: 947 Aktiv.: 3.99 Kraj: Žalec
|
Objavljeno: Pet Jan 19, 2007 11:03 pm Naslov sporočila: Hex to Bin |
|
|
Pri računalništvu moramo v c++ napisati program, ki bo seštel dve 256 bitni števili. Ker pa števila "ne moreš" vnesti v binarnem sistemu (ker je preveliko), jih moramo vnesi v šestnajstiškem oziroma hex sistemu. Ti vnešeni števili pa moramo nato pretvoriti v binarni sistem in ju shraniti v polje in izračunati njuno vsoto. Zanima pa me, kako naj pretvorim število iz hex v bin sistem? |
|
Nazaj na vrh |
|
 |
Slowfly Član


Pridružen-a: Sre 18 Feb 2004 2:07 Prispevkov: 4082 Aktiv.: 17.19 Kraj: Ljubljana
|
Objavljeno: Pet Jan 19, 2007 11:31 pm Naslov sporočila: |
|
|
Uporabi na primer programček HEX Editor. |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.59 Kraj: Trzic
|
Objavljeno: Pet Jan 19, 2007 11:45 pm Naslov sporočila: |
|
|
slowfly,
Drugače pa hex v bin sploh ni problem. HEX prebereš kot znake, vsak znak od 0-9 in A-F pretvoriš v 4-bite v binarnem sistemu in si na konju (če seveda to misliš). _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
Slowfly Član


Pridružen-a: Sre 18 Feb 2004 2:07 Prispevkov: 4082 Aktiv.: 17.19 Kraj: Ljubljana
|
Objavljeno: Pet Jan 19, 2007 11:52 pm Naslov sporočila: |
|
|
Uff, šele sedaj sem dobro prebral vprašanje! Če prav razumem, se išče programska rešitev problema v C++. Se opravičujem za neumen odgovor!
lp |
|
Nazaj na vrh |
|
 |
NUFAN Član


Pridružen-a: Pon 05 Apr 2004 21:39 Prispevkov: 947 Aktiv.: 3.99 Kraj: Žalec
|
Objavljeno: Pet Jan 19, 2007 11:56 pm Naslov sporočila: |
|
|
Hja, na to varianto sem že pomislil. Da bi pač imel eno funkcijo za pretvarjanje v kateri bi se spraševal če je 0, če je 1, če je 2,... in potem bi za vsako hex vrednost priredil novo binarno vrednost. Si to mislil ne? |
|
Nazaj na vrh |
|
 |
Slowfly Član


Pridružen-a: Sre 18 Feb 2004 2:07 Prispevkov: 4082 Aktiv.: 17.19 Kraj: Ljubljana
|
Objavljeno: Sob Jan 20, 2007 12:04 am Naslov sporočila: |
|
|
Mogoče je pa tukaj rešitev tvoje težave. Če sem spet brcnil v temo, me prosim ne popljuvajta preveč. Pač nisem programer.
lp |
|
Nazaj na vrh |
|
 |
NUFAN Član


Pridružen-a: Pon 05 Apr 2004 21:39 Prispevkov: 947 Aktiv.: 3.99 Kraj: Žalec
|
Objavljeno: Sob Jan 20, 2007 12:20 am Naslov sporočila: |
|
|
Mogoče je res to rešitev, ampak ne razumem programa, ker še v šoli nismo prišli tako daleč  |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.59 Kraj: Trzic
|
Objavljeno: Sob Jan 20, 2007 10:42 am Naslov sporočila: |
|
|
Potem pa malo bolj natančno povej, zakaj potrebuješ binarni zapis? Za izpis? Za računanje? _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.16 Kraj: Ljubljana
|
Objavljeno: Sob Jan 20, 2007 10:46 am Naslov sporočila: |
|
|
V pascalu to izgleda takole..
Koda: |
function HexToInteger(s: string): integer;
var
n: integer;
begin
result:=0;
for n := 1 to length(s) do
case s[n] of
'0'..'9': result := result shl 4 + (ord(s[n]) - ord('0'));
'A'..'F': result := result shl 4 + (ord(s[n]) - 55);
else
ShowMessage('Napačen znak');
end;
end; |
V c boš pa že znal prevesti..
LP GJ |
|
Nazaj na vrh |
|
 |
NUFAN Član


Pridružen-a: Pon 05 Apr 2004 21:39 Prispevkov: 947 Aktiv.: 3.99 Kraj: Žalec
|
Objavljeno: Sob Jan 20, 2007 3:20 pm Naslov sporočila: |
|
|
NeoTO je napisal/a: |
Potem pa malo bolj natančno povej, zakaj potrebuješ binarni zapis? Za izpis? Za računanje? |
Binarni zapis potrebujem za računanje in izpis. Evo, prilagam besedilo naloge, da bo bolj razumljivo.
Napišite funkcijo za seštevanje 256 bitnih celih števil. Funkcija sprejme števili shranjeni v polju in v binarni obliki. Rezultat je vsota podanih števil v polju in binarni obliki. Dodatno napišite še funkcijo za izpis binarnih števil in main funkcijo, v kateri omogočite uporabniku vpis števil, nato pa mu izpišete rezultat funkcije seštevanja oz. vsoto števil.
@GJ, tisto kar imaš napisano v case stavku si ne znam prevest v c++. |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.59 Kraj: Trzic
|
Objavljeno: Sob Jan 20, 2007 3:50 pm Naslov sporočila: |
|
|
Tisto lahko napišeš takole:
Koda: |
if (s[n]>='0' && s[n]<='9') result=result<<4 + s[n]-'0';
if (s[n]>='A' && s[n]<='F') result=result<<4 + s[n]-'A'+10;
|
Še vedno pa ne razumem v kakšni obliki imaš podan vhodni podatek. Binarno pomeni pač kot int ali kot int1[]={0, 1, 1, 0, 0, 1, 1....} ? _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
NUFAN Član


Pridružen-a: Pon 05 Apr 2004 21:39 Prispevkov: 947 Aktiv.: 3.99 Kraj: Žalec
|
Objavljeno: Sob Jan 20, 2007 4:26 pm Naslov sporočila: |
|
|
Vhodni podatek vnese uporanik in sicer v hex zapisu. |
|
Nazaj na vrh |
|
 |
int47 Član


Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2105 Aktiv.: 8.86 Kraj: Ljubljana
|
Objavljeno: Sob Jan 20, 2007 6:20 pm Naslov sporočila: |
|
|
Iskoristiš dejstvo, da so znaki v ACSII po vrsti '1' = '0'+1;
Koda: |
if ((znak >= '0') && (znak <= '9')) byte = znak-'0';
else if ((znak >= 'A') && (znak <= 'F')) byte = znak-'A'+10; |
Za male črke boš pa že sam pogruntal; |
|
Nazaj na vrh |
|
 |
|