unsigned long swap_bytes(unsigned long n) {
unsigned char bytes[8];
unsigned long temp;
bytes[0] = (n >> ??) & 0xff;
bytes[1] = (n >> ??) & 0xff;
// ...
}
Ich bin wirklich verwirrt, wie ein 8-Byte-unsigned long
von ex verschieben: 0x12345678deadbeef
-0x34127856addeefbe
. Ich habe angefangen, aber ich bin jetzt festgefahren. Bitte helfen Sie.Swap Bytes innerhalb eines unsigned long (8 Bytes) in C
'unsigned long' ist wahrscheinlich nicht breit genug, um' 0x12345678deadbeef' zu enthalten. Meinst du "unsigned long long"? –
Fahren Sie fort, wie Sie begonnen haben. Verschieben und maskieren Sie jedes Byte in das Array und erstellen Sie das Ergebnis komplementär. 'unsigned' war eine gute Wahl. –
'long' ist * mindestens * die Größe von' int'. Ich empfehle Ihnen, printf ("% zu \ n", sizeof (lang)) ', um das festzustellen. –