Umwandlung von Hex zu Binär und speichern von bits in einem array

Ich bin beim schreiben einer Funktion in C zum umwandeln eines Hex-Wert in seine binäre Darstellung und speichern Sie dann jedes bit einzeln in ein array.

Also derzeit bin ich über diese langatmige Methode..

void HexToBinary(int *bits, unsigned int hex)
{
  bits[31] = (hex & 0x90000000) >> 31;
  bits[30] = (hex & 0x50000000) >> 30;
  bits[29] = (hex & 0x30000000) >> 29;
  bits[28] = (hex & 0x10000000) >> 28;
  bits[27] = (hex & 0x09000000) >> 27;
  bits[26] = (hex & 0x05000000) >> 26;
  bits[25] = (hex & 0x03000000) >> 25;
  bits[24] = (hex & 0x01000000) >> 24;
  bits[23] = (hex & 0x00900000) >> 23;
  bits[22] = (hex & 0x00500000) >> 22;
  bits[21] = (hex & 0x00300000) >> 21;
  bits[20] = (hex & 0x00100000) >> 20;
  bits[19] = (hex & 0x00090000) >> 19;
  bits[18] = (hex & 0x00050000) >> 18;
  bits[17] = (hex & 0x00030000) >> 17;
  bits[16] = (hex & 0x00010000) >> 16;
  bits[15] = (hex & 0x00009000) >> 15;
  bits[14] = (hex & 0x00005000) >> 14;
  bits[13] = (hex & 0x00003000) >> 13;
  bits[12] = (hex & 0x00001000) >> 12;
  bits[11] = (hex & 0x00000900) >> 11;
  bits[10] = (hex & 0x00000500) >> 10;
  bits[9] = (hex & 0x00000300) >> 9;
  bits[8] = (hex & 0x00000100) >> 8;
  bits[7] = (hex & 0x00000090) >> 7;
  bits[6] = (hex & 0x00000050) >> 6;
  bits[5] = (hex & 0x00000030) >> 5;
  bits[4] = (hex & 0x00000010) >> 4;
  bits[3] = (hex & 0x00000009) >> 3;
  bits[2] = (hex & 0x00000005) >> 2;
  bits[1] = (hex & 0x00000003) >> 1;
  bits[0] = (hex & 0x00000001);
}

Nimmt eine 8 char (32-bit) hex-Wert und die Verwendung von & und bit-Verschiebungen identifiziert, die wollten bit und speichert diese dann in dem array für jedes bit in der hex-Wert.

Offensichtlich ist dies eine sehr lange Methode und nicht sehr schön. Ich bin auf der Suche nach einem kürzeren und einfacheren Weg, es zu tun.

Bits gespeichert werden müssen, werden separat in das array und nicht in den quads, wie ich individuell den Zugriff auf die einzelnen bit in das Programm.

Was ist der beste Weg zu gehen über diese?

Dank

  • Ich bin mir nicht sicher, aber ich denke, sprintf formatieren können, binäre zahlen in strings
Schreibe einen Kommentar