Har lige gang i et par små opgaver og er løbet ind i lidt problemer.
1) Skal lave en funktion der udskriver af hver byte i en int. Her er så hvad jeg er kommet frem til. void dispHex(int tal){ char* p; p = (char*)&tal; printf("%x\n%x\n%x\n%x\n", *p, *(p+1), *(p+2), *(p+3)); } Smider jeg 8875 in som i hex er 22AB udskriver den: ffffffAB 22 0 0
Hvor kommer de f'er fra ?? En bytes representeres jo kun af 2 hex tal.
2) Består i at vende rundt på bytes'ne inde i en int, således at msb bliver lsb osv. Her hvad jeg kom op med, men det virker slet ikke :( void swapBytes(int tal){ char temp; char* p; p = (char*)&tal;
Men stadig.. hvorfor er det lige præcist at den vælger at udskrive en masse f'er bare fordi bits/byts er negeret ? Der er jo alligevel kun plads til 2 hex tal.
der laves en implicit konvertering fra unsigned char til int, herunder fortegnsforlængelse, AB (10101011) fortegns forlænges da det nu betragtes som en int og fortegnet er den mest betydende bit (MSB), 1 betyder at det er negativt så der indsættes 24 1'er som er FFFFFF efterfulgt af AB. Havde tallet ikke haft et 1 i MSB men et 0 som 7B ville have haft, havde 0 blivet sat ind på alle foranstående positioner.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.