Avatar billede semiprofkode Nybegynder
19. januar 2006 - 14:11 Der er 10 kommentarer

bitmappen i et stort helt tal

Hvordan får jeg bitmappen ud af stort helt tal, dvs laver det om til binær, og hvordan ændrer jeg i det binære tal inden jeg laver det om til hel tallet(decimal) igen ?
Avatar billede semiprofkode Nybegynder
19. januar 2006 - 14:14 #1
Jeg skal bruge det til at ændre en keycode for et tastetryk som ligger i lParam:

return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
Avatar billede sovsekoder Nybegynder
19. januar 2006 - 14:20 #2
eksempler:
int stortHeltal = 0x12345678;

stortHeltal &= !1; reset bit0
stortHeltal &= !8; reset bit3
stortHeltal |= 64; set bit6
stortHeltal = stortHeltal^4; //toggle bit2
if(stortHeltal&4 != 0)
{
  //her hvis bit 2 er sat...
}
osvosv.
Avatar billede arne_v Ekspert
19. januar 2006 - 14:22 #3
hm

en int opbevares altid binaert i betydningen ikke-tekst i memory

decimal i betydningen binaer tekst og decimal tekst er noget helt andet

saa ikke forstaaet
Avatar billede sovsekoder Nybegynder
19. januar 2006 - 14:37 #4
det lyder som om du gerne vil sætte og tjekke bitsne i dit heltal... her er et eksempel på hvordan en klasse kan gøre det:
class BitHelper
    {
        public static bool CheckBit(int bit, int number)
        {
            int val = (1<<bit);
            return (number&val)>0;
        }

        public static int SetBit(int bit, int number)
        {
            // clearbit and set it.
            int val = (1<<bit);
            number ^= number&val;
            number |= val;
            return number;
        }
    }

eks. på brug:
int stortHeltal = 0;
bool result;
result = BitHelper.CheckBit(4, stortHeltal); // bitten er ikke sat så result = false
stortHeltal = BitHelper.SetBit(4, stortHeltal); // nu sættes bitten
result = BitHelper.CheckBit(4, stortHeltal); // bitten er nu sat og result = true;
Avatar billede sovsekoder Nybegynder
19. januar 2006 - 14:39 #5
...måske skulle du også bruge en "ResetBit", det er jo noget i denne stil:
public static int ResetBit(int bit, int number)
        {
            // Resetbit and set it.
            int val = (1<<bit);
            number ^= number&val;
            number &= val;
            return number;
        }
Avatar billede sovsekoder Nybegynder
19. januar 2006 - 14:39 #6
og hvis man gerne vil ha' noget der virker!! :o, så må du heller slette en linie, så der ser sådan ud:
...måske skulle du også bruge en "ResetBit", det er jo noget i denne stil:
public static int ResetBit(int bit, int number)
        {
            // Resetbit.
            int val = (1<<bit);
            number ^= number&val;
            return number;
        }
Avatar billede semiprofkode Nybegynder
19. januar 2006 - 14:43 #7
hehe, sikke en krig. kan man ikke umiddelbart få et nummer i 10-tals systemet(decimal) lavet om til binær ? (1000101010 osv.) Koster det en krig?
Avatar billede semiprofkode Nybegynder
19. januar 2006 - 14:45 #8
int stortHeltal = 0x12345678; hvad betyder x'et? Jeg mangler netop noget som angiver at det er andet talsystem. Er det betydningen af x'et?
Avatar billede arne_v Ekspert
19. januar 2006 - 15:59 #9
0x11 er hex 11 (17 decimalt)

011 er oktalt 11 (9 decimalt)
Avatar billede arne_v Ekspert
19. januar 2006 - 16:00 #10
hvis du vil konvertere mellem forskellige tekst representationer (i forskellig radix)
saa se koden her http://www.eksperten.dk/spm/608413
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester