Hexzahlen

Gast #259036
Lesenswert?

unsigned long value=4283036831;
unsigned char hexbyte;

hexbyte = value;
Send(...);

hexbyte = ((unsigned long)value & 0x0000FF00) >> 8;
Send(...);

hexbyte = ((unsigned long)value & 0x00ff0000) >> 16;
Send(...);

hexbyte = ((unsigned long)value & 0xff000000) >> 24;
Send(...);
Gast #259037
Lesenswert?

Jens ist doch gar kein hebräischer Name, aber Du schreibst von rechts
nach links? (-;

Also lieber umgekehrt:

send((unsigned char) (value >> 24));
send((unsigned char) (value >> 16));
send((unsigned char) (value >> 8));
send((unsigned char) (value));


(Merke: nur Intel fängt mit der niedrigsten Stelle an)
Gast #259038
Lesenswert?

> Jens ist doch gar kein hebräischer Name, aber Du schreibst von
> rechts nach links?

Tut er doch nicht. Er schreibt von links nach rechts, was aber bei
Zahlen auch im europäischen Raum eher unüblich ist.
Gast #259040
Lesenswert?

Was genau meinst Du mit "in Hex"? Sollen die Zahlen lesbar sein?

Wenn ja, dann vielleicht so:
char s[15];
sprintf(s, "%02X %02X %02X %02X", (in >> 24) & 0xFF, (in >> 16) &
0xFF, (in >> 8) & 0xFF, in & 0xFF);
Send(s);

Alternativ selbst schreiben (falls sprintf zu viel Speicher frisst):

char nibble(unsigned char v)
{
    return (v<=9) ? (v + '0') : (v-10+'A');
}

...
Send(nibble((val >> 28) & 0xF);
Send(nibble((val >> 24) & 0xF);
Send(nibble((val >> 20) & 0xF);
...
Send(nibble((val >> 0) & 0xF);

Vielleicht in einer Schleife.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren