hex to char
-
Hallo,
ich wollte gerne wissen, wie ich in ein
long test = 0xffffffff
auf char test [4] verteilen kann
also ich möchte z.B. in test [0]= (char)255; stehen haben.
So zusagen das ff soll als (char) wert eingelesen werden
-
Hier hast du eine portable Variante. Die unportable Variante mittels rumcasten zeigt dir bestimmt auch gleich jemand, aber ich weigere mich, das zu verbreiten.
long foo = 0x12345678; char bar[4]={(foo >> 24) & 0xFF, (foo >> 16) & 0xFF , (foo >> 8) & 0xFF, (foo >> 0) & 0xFF};
-
danke,
hat sehr gut funktioniert
-
Hallo,
also ich habe jetzt ein Problem bei der Sache entdeckt wenn die Zahl z.B. 1 ist, dann habe ich in charWERT[0] und auch in charWERT [4] die zahl stehen.
Ich möchte sie aber nur am ende haben. kann mir vielleicht jemand sagen wie das problem weg bekomme
-
Ich vermute mal, das Problem ist, dass ein Vorzeichenbit mittransformiert wird. Das ist mir beim Test meines Progrämmchens nicht aufgefallen, weil long bei mir viel länger als 32 Bit ist. Bei dir aber anscheinend nicht.
Möglichkeit A: unsigned Typen verwenden. Haben kein Vorzeichen, Problem entfällt
Möglichkeit B: Nur 31 Bit transformieren.
long foo = 0x12345678; char bar[4]={(foo >> 24) & 0x7F, (foo >> 16) & 0xFF , (foo >> 8) & 0xFF, (foo >> 0) & 0xFF};P.S.: Ich sehe gerade: charWERT[4]? Was soll das denn sein? Hast du den Algorithmus auch richtig erweitert? Beantworte bitte zuerst diese Frage, bevor du meine Korrekturvorschläge benutzt.