Int in Char?
-
Hi,
ich hab da mal ein Problem - zumindest steh ich grad aufm Schlauch.
Ich möcht gern ein Integer in zwei Chars "pressen" und zwar in hexadezimaler Form.
Also, z.B. int i = 1106, dann soll in char c1 = 0x04 und char c2 = 0x52 stehen.
Aber irgendwie fehlt mir der Ansatz. Mit sprintf funzt es nicht, da bekomm ich
erstmal 3 Zeichen, die nicht den eigentlichen Hex-Wert wiederspiegeln, sondern die
einzelnen Hex-Werte also anstatt 0x04 = 0x34.
Also hab ich gedacht, muss ich irgendwie bitweise verschieben. Da bekomm ich
zumindest in char c1 die 0x04 aber bei char c2 mach ich irgendwas falsch, da krieg ich
nämlich 0x82. Irgendwie blick ich es nicht...int i = 1106; char c1 = i >> 8; //geht char c2 = i; //?
Hat da vielleicht jmd nen Tipp?
-
Versuchs mal mit
char c2 = i & 0xFF;
-
Hi,
also das stellt in der Tat ein Problem dar, denn auf 32-Bit Rechnern ist ja int 4 Byte groß, ein char jedoch nur 1 Byte.
Und ein char ist ja nur ein Zeichen, nicht drei.
-
Ha, super!
Vielen Dank
-
Da musst du Mod rechnen (% 0x100).
Edit: Zu spät...
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
bei mir geht dein code einwandfrei! auch sonst scheint mir damit alles in ordnung zu sein. allerdings solltest du unsigned char anstelle char verwenden, weil du bei werten für c1/c2 größer 127 sonst negative werte bekämst.