Konvertieren von dezimal-zu-char/string
Sagen wir, ich habe diese Nummer
int x = 65535;
Ist die dezimale Darstellung:
ÿÿ
Ich weiß, wie ich es tun kann, von einzelnen char
#include <stdio.h>
int main() {
int f = 65535;
printf("%c", f);
}
Aber dies wird nur geben Sie mir "ÿ"
Ich würde gerne dies zu tun, ohne Verwendung einer externen Bibliothek, und vorzugsweise mit C-Typ-strings.
Let's say i have this number int x = 65535; Which is the decimal representation of: ÿÿ
wat?- ich habe vielleicht erklärt es falsch, ÿÿ ist für 65535, als die "49" steht für "1". Als ÿ ist 255 im dezimal -, ÿÿ ist (255*256)+255 = 65535
- ÿ 255 Latin-1 oder Windows-1252.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Betrachten Sie den Wert 65535 oder 0xffff in hexadezimaler, was bedeutet, seine positiven Wert ein, nimmt 2 bytes 0xff und 0xff
f & 0xff
hält nur die 8 LSb (0xffff & 0xff = 0xff)f >> = 8
verschiebt den Wert 8 bits nach rechts, 0xffff wird 0x00ff (die 'ff' rechten Seite sind verschwundenf > 0
ist wahr, daf == 0xff
jetztNext-Schleife ist die gleiche, aber
f >>= 8
Verschiebungen 0x00ff nach rechts => 0x0000, und f ist null.So ist die
f > 0
Bedingung ist falsch und die Schleife endet.x > 65535
?)f = 0;
auch)Was du suchst, ist die bit-Maskierung:
(x >> 8) & 0xFF
fürdie high-order byte, und
(x & 0xFF)
für die unteren. (Eigentlichwenn
int
hat 32 bits, es ist(x >> 24) & 0xFF
für die hohe Ordnungbyte. Aber angesichts der Werte, und was Sie sagen, Ihre erwartend,
Sie wollen wahrscheinlich das zweite byte, und nicht die high-order byte.)
Was Sie haben, ist eine 16 bit (zwei Byte) - Zahl ohne Vorzeichen. Ein
char
8 bits (ein byte). Dies bedeutet, dass Sie zu extrahieren Sie die zwei bytes in der Zahl, um Sie als separate Zeichen.Dies geschieht mit den bitweisen Operatoren. Sie können bitweise und -
&
und bitweise Verschiebung>>
zu erreichen, dass.Etwas wie