Bytes Binär in C
Ich versuche einfach konvertiert ein byte empfangen von fget in Binär.
Weiß ich den Wert des ersten byte-49 basiert auf dem Druck den Wert. Ich brauche jetzt zu konvertieren, das in eine Binär-Wert.
unsigned char byte = 49;//Read from file
unsigned char mask = 1; //Bit mask
unsigned char bits[8];
//Extract the bits
for (int i = 0; i < 8; i++) {
//Mask each bit in the byte and store it
bits[i] = byte & (mask << i);
}
//For debug purposes, lets print the received data
for (int i = 0; i < 8; i++) {
printf("Bit: %d\n",bits[i]);
}
Diese drucken:
Bit: 1
Bit: 0
Bit: 0
Bit: 0
Bit: 16
Bit: 32
Bit: 0
Bit: 0
Press any key to continue . . .
Klar, dies ist nicht ein binärer Wert. Keine Hilfe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Des Problems, das Sie haben ist, dass Sie Ihre Aufgabe nicht was einen Wert true oder false.
Hierdurch wird der Wert des bit. Sie brauchen, um zu sehen, wenn das bit auf ein oder aus, wie diese:
Ändern
zu
oder
oder
Eine Möglichkeit unter vielen:
Können Sie feststellen, dass Ihre Ausgabe hat ein paar 1 und 0, sondern auch eine Potenz von 2 ist, Z. B. 32. Dies ist, weil, nachdem Sie zu isolieren, das bit, die Sie möchten, verwenden Sie die Maske, die Sie noch haben, um bit-verschieben Sie Sie in das least significant digit, so dass es zeigt, wie eine 1. Oder Sie verwenden könnte, was anderen Beiträgen vorgeschlagen, und statt der bit-Verschiebung das Ergebnis (so etwas wie 00001000 zum Beispiel), können Sie einfach nutzen (Ergebnis != 0) zu Holen, entweder eine 1 oder 0, da in C, false ist 0, und Vergleiche wie != gibt 1 zurück, als wahr (denke ich).
Dieser Zusatz im Ort der arbeiten: