Char Werte einem Int übergeben

M

MrCodeMaster

Hy Leute ich hab wieder mal ein Problem :(

Ich möchte gern wissen, ob es funktioniert, alle Elemente eines Char einem Int zu übergeben?

Und Wie?


Mfg,
MrCodeMaster
 
Alle Elemente eines Char? Was meinst du damit? Ein Char ist ein 1Byte großer Speicherbereich, ein Int ist (in den meisten Fällen) ein 4Byte großer Speicherbereich. Prinzipiell kannst du ein Char in ein Int ablegen:

C:
char c = 'A';
int i = (int)c;

Wobei noch unklar ist, was dir vorschwebt, ich habe das Gefühl, das du eigentlich auf was anderes raus willst.
 
Wenn ich im Char folgendes drinn habe: Element 0: 1
Element 1: 0

Wie kann ich dann das einem int übergeben wenn ich den Char konvertiere kommt immer etwas falsches herraus.
 
Also hast du ein Char-Array?

C:
char s[2];

s[0] = 1;
s[1] = 0;

Stimmt das so?

Das wäre etwas anderes als ein einzelnes Char. Du kannst die Inhalte aber dennoch in eine Int-Variable speichern. Dazu musst du aber wissen, das dies nur mit 4 Characters geht, weil Int nun mal 4byte groß ist und Char 1byte. Erledigen kannst du das durch sog. Shiften. Das funktioniert so:

C:
// Shifte das erste Element 8 bit nach links und verknüpfe es "ODER" mit dem zweiten Element
int i = s[0] << 8 | s[1];

Wenn du nun den umgekehrten Weg haben willst geht das so:

C:
// Hole das erste Element 8 bit nach rechts
s[0] = i >> 8;
// Maskiere 0xff auf den Int-Wert, dann bekommst du nur, was ganz rechts im Int steht
s[1] = i & 0xFF;

Vielleicht sollst du dich aber erstmal mit binären Operationen auseinander setzen ;)
 
Du meinst ein char-Array.
Das ist was ganz Anderes als ein einzelnes char.

Und du kannst einen langen Satz nicht in eine einzige Zahl stopfen.
Ein char-Array kann man nicht zu ienem int konvertieren.
Das "Falsche", was du bekommst, ist vermutlich die Speicheradresse vom Arrayanfang,

edit:
Wie Saftmeister schon gesagt hat, mit 3 (bzw. + \0 =4) chars geht das theoretisch,
ist aber eher sinnlos. Warum willst du sowas tun?

Wenn die Endianess nicht wichtig ist, geht das übrigens noch einfacher:
C++:
i = *((int*)s);
 
Moin,

Wenn ich im Char folgendes drinn habe: Element 0: 1, Element 1: 0
Wie kann ich dann das einem int übergeben wenn ich den Char konvertiere kommt immer etwas falsches heraus

Beschreib' doch mal deutlicher (!) was Du eigentlich genau erwartest ....

Wenn so was hast, wie in Saftmeisters Beispiel, soll dann 10 auf der int-Variablen stehen, oder was :confused:

Gruß
Klaus
 
Ich wollte versuchen, auf eine andere Art und Weise eine Taschenrechner zu programmieren. Er liest alle zeichen links von +-*/ ein und alle Zeichen Rechts davon. Das speichere ich in einem Char-Array und dann will ich es mit den Rechenoperationen verwenden. Aber da das anscheinend ncht geht werd ich doch die Methode verwenden die ich eh schon mal in diesem Forum erklärt bekommen habe.
 
Zurück