Forum: Compiler & IDEs Bitreihengolde umdrehen in CAPL


von Adil O. (Gast)


Lesenswert?

Guten Tag,

ich möchte eine Bitreihenfolge (32 bit) aus Hex Zahlen umdrehen z.b 
01C66660
zu 06666C10 leider kriegt ich das nicht hin! gibt es in canoe eine 
Funktion die das macht?
Mein Code sieht so aus!


    /* Variable Declarations */
   dword Output[32];
    int i, j;

   /* Code Begins */
    j= 0;
    for (i = 0; i < 16; i += 1)
    {
        Output[i] = temp[30 - j];
        output[i + 1] = temp[31 - j];
        j += 1;
   }

von Daniel V. (danvet)


Lesenswert?

Bist du dir sicher, dass du weißt, was du machen möchtest?
- Warum ist denn "dword Output[32]" 32 Elemente groß?
- Wo kommt "01C66660" her? Ist das ein String?
- Wie ist "temp[]" definiert?

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

1
uint32_t reverse_nibble( uint32_t in )
2
{
3
  uint32_t out = 0;
4
  for( uint8_t i = 8; i; i-- ){
5
    out <<= 4;
6
    out |= in & 0x0F;
7
    in >>= 4;
8
  }
9
  return out;
10
}

von Detlef _. (detlef_a)


Lesenswert?

uint32_t reverse_nibble( uint32_t n )
{
  n = ((n >>  4) & 0x0f0f0f0f) | ((n <<  4) & 0xf0f0f0f0);
  n = ((n >>  8) & 0x00ff00ff) | ((n <<  8) & 0xff00ff00);
  n = ((n >> 16) & 0x0000ffff) | ((n << 16) & 0xffff0000);
  return n;
}

Leider weiß ich nicht, wie das in canoe geht, weil ich Segler bin :-/

Cheers
Detlef

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.