von binär auf ASCII-Code
-
hi,
ich hab folgendes problem:
ich hab ein integer feld das so auszieht:
feld[8]=0,1,1,0,1,0,0,1
laut ascii ist das ein "e".
wie kann ich mir das feld in ein char schreiben so das das "e" ausgegeben wird (brauche nur die Ausgabe auf stdout).Kann mir dabei jemand helfen?
Vielen Dank im vorraus
-
du könntest dir eine funktion schreiben die dir den gesamten werd vom feld ausrechnet und dan einfach mit
std::cout << (char)betrag;
ausgeben.
wobei du den cast weglassen kannst wenn du betrag gleich als char deklarierst
-
was heißt ausrechnet?
codiere in C
-
naja du hast ja so ein feld:
feld[8]=0,1,1,0,1,0,0,1
und brauchst den dezimalwert dieser binärzahlen oder?
ich würd das irgendwie so machen
unsigned int berechne (int feld[], size_t groesse) { unsigned int c=0; // das gesamtergebnis while (--groesse) { if (feld[groesse]) c += pow(2, (int)groesse); } return c; } int _tmain(int argc, _TCHAR* argv[]) { int feld[] = {0,1,1,0,1,0,0,1}; std::cout << berechne(feld, sizeof(feld)/sizeof(feld[0]));
versuchs mal aus
-
int feld[8]={0,1,1,0,1,0,0,1},num=0,j=7; for(int i=0;i<8;i++,j--){ num+=pow(2,i)*feld[j]; } cout<<(char)num<<endl;
wenn du reines c prog, dann natürlich kein cout
-
Danke, ich probier das jetzt aus,
muss dazu aber erst Knupix starten.
Hast du vielleicht nen Tip für nen guten C-Compiler?
-
@freshman:
jop stimmt ohne cout
@Andy: du hat gemeint das ergebnis ist ein 'e' also 101, liest du von links nach rechts?
bin das so gewohnt das ich immer von rechts nach links lese bei binär zahlen
-
(01101001)dual=(105)dez entspricht im Ascii-Code dem Zeichen 'i'
(10010110)dual=(150)dez entspricht im Ascii-Code dem Zeichen 'û'
@Andy711: ist aber beides kein 'e'
-
stimmt
ich glaub er meint aber das erste sonst hätt die 0 keinen sinn
-
david_14 schrieb:
stimmt
ich glaub er meint aber das erste sonst hätt die 0 keinen sinnich glaub er meint die zweite Mölglichkeit, sonst hätte die 0 keinen Sinn
freshman schrieb:
(01101001)dual=(105)dez entspricht im Ascii-Code dem Zeichen 'i'
(10010110)dual=(150)dez entspricht im Ascii-Code dem Zeichen 'û'//ich habe bei meinem Code aber auch ersteres umgesetzt;-(
-
also:
0110 1001
6 5
und 65 Hex ist ein kleines "e" !!
-
musst ja sagen das du auch von rechts nach links lest
übrigens so wie freshman
while (--groesse != 0) c += pow(2, (int)groesse) * feld[groesse];
braucht man die if nicht
-
?
bin: 0110 1001
dez: 105
hex: 69wie hast du das ausgerechnet?
-
9 nicht 5
sorry hab mich vertippt.
-
du hast schon recht, daß \x65 (= (101)dez ) ein 'e' ist
aber:
(01101001)dual=
12^0
+12^3
+12^5
+12^6
------
= 105 dezimal = \x69 entspricht 'i' im Ascii-Code!!!!!!(01101001)dual=(105)dez entspricht im Ascii-Code dem Zeichen 'i'
(10010110)dual=(150)dez entspricht im Ascii-Code dem Zeichen 'û'[edit]freshman.tooLate()
-
nicht gut!!
ich brauche aber das "e"!!!
-
hier, bitte schön: das 'e'
-
*heul* keiner mag mich!!! *heul*
----
kann ich nicht irgendwie von dem "i" aufs "e" schließen?
einfach immer 4 runter zählen
-
nichts einfacher als das:
cout<<(char)('i'-4)<<endl;//gibt 'e' aus ;-))
-
scheiße bin ich bescheuert!!!
alles zurück...
natürlich muss da ein "i" rauskommen!
Das Wort was ich suchte war "Dies" und ich hab das ganze verschoben gehabt...tut mir leid. vorhin hab ich das mehr oder weniger richtig gemacht als ich 65 geschrieben habe ... oder 69 ... is ja auch egal!
Aber danke nochmal für den Code ich nutz das jetzt!
Schönen Nachmittag noch
-
david_14 schrieb:
du könntest dir eine funktion schreiben die dir den gesamten werd vom feld ausrechnet und dan einfach mit
std::cout << (char)betrag;
ausgeben.
wobei du den cast weglassen kannst wenn du betrag gleich als char deklarierstlol
Werd, dan
LOL
Armes Kind. Und dein Tipp is auch total fürn AR-SCH.
Geh lieber cs spielen...