Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: VCL (C++ Builder) ::  String nach ASCII konvertieren     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Morgleh
Unregistrierter




Beitrag Morgleh Unregistrierter 19:14:58 18.12.2006   Titel:   String nach ASCII konvertieren            Zitieren

Wie kann ich ich ein Zeichen in ASCII-Code umwandeln?

Ich will z.B: Das Zeichen "a" in den ASCII-Zahl "64" umwandeln mit 2 Addieren und wieder in ein Zeichen (String) umwandeln.


Mit StrToInt() meckert Borland immer sobald er ein Zeichen bekommt und keine ZeichenZahl.
akari
Moderator

Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11306
Beitrag akari Moderator 19:16:43 18.12.2006   Titel:              Zitieren

Hallo

expliziert in int umwandlen
C++:
char zeichen = 'a';
int ascii = int(zeichen);
zeichen = char(zeichen +2);


bis bald
akari

_________________
In der nächsten Version wird alles besser!
Morgleh
Unregistrierter




Beitrag Morgleh Unregistrierter 19:21:11 18.12.2006   Titel:              Zitieren

besten Dank!
Morgleh
Unregistrierter




Beitrag Morgleh Unregistrierter 19:33:12 18.12.2006   Titel:              Zitieren

Und wie funktioniert das wenn ich eine Zeichenkette (AnsiString) habe?
Wie kann ich die einzenlen Zeichen umwandeln und später wieder einfügen?
MWJK
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.11.2006
Beiträge: 150
Beitrag MWJK Mitglied 19:39:28 18.12.2006   Titel:              Zitieren

Hallo,

wenn du einen AnsiString hast, kannst du diesen wie ein Array behandeln.

beispiel:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
AnsiString zeichen = 'Hallo';
char zeichen1 = zeichen[1];
char zeichen2 = zeichen[2];
char zeichen3 = zeichen[3];
char zeichen4 = zeichen[4];
char zeichen5 = zeichen[5];
 
int ascii1 = int(zeichen1);
inr ascii2 = int(zeichen2);
.
.
.
 
zeichen1 = char(zeichen1 + 2);
zeichen2 = char(zeichen2 + 2);
.
.
.
 
zeichen = zeichen1 + zeichen2 + zeichen3 + zeichen4 + zeichen5;


Das ist jetzt die ausführliche behandlung der strings, es geht sicher kürzer zusammengefasst, hier nur ausführlich erklärt, damit du verstehst was dahinter steckt.

Gruß
MWJK
CStoll
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.10.2005
Beiträge: 17912
Beitrag CStoll Mitglied 09:42:23 19.12.2006   Titel:              Zitieren

@MWJK: Erstens schreibt man String-Literale in doppelten Anführungszeichen ". Und zweitens: Warum so umständlich? Das kann man doch auch in einer Schleife und ohne Zwischenvariable lösen:
C++:
std::string text = "Hallo";
for(int i=0;i<text.length();++i)
  text[i]+=2;

_________________
Wo ich bin, herrscht Chaos. Leider kann ich nicht überall sein.
Zugriffsverletzung002
Unregistrierter




Beitrag Zugriffsverletzung002 Unregistrierter 20:17:27 10.03.2008   Titel:              Zitieren

Hallo, ich schreibe gerade ein kleines Verschlüsselungsprogramm. In Delphi, hat das Prinzip geklappt, doch in C++ (Turbo) kommt mir einen Zugriffverletzung entgegengesprungen:


C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AnsiString Code(AnsiString keyword, AnsiString text)
{
  int i, pos, key;
  AnsiString dummy;
  pos = 0;
  for (i=0; text.Length(); i++) {
    if (pos = keyword.Length())
      {
      pos = 0;
      }
    else
      {
      pos += 1;
      }
  key = int(text[i]) + int(keyword[pos]);
  dummy += char(key);
  }
  return dummy;
}


Der Fehler liegt bei "int()", aber wenn ich gearde richtig gelesen habe, müsste es doch eigentlich klappen - kann mir jemand helfen ?
Integerman
Unregistrierter




Beitrag Integerman Unregistrierter 20:20:47 10.03.2008   Titel:              Zitieren

akari schrieb:
zeichen = char(zeichen +2);

Ich frag mal in die Runde, warum "+2"? Geht was beim konvertieren nach Integer verloren? Wenn ja was? Reine Neugier. ;)
Integerman
Unregistrierter




Beitrag Integerman Unregistrierter 20:30:32 10.03.2008   Titel:              Zitieren

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
AnsiString Code(AnsiString keyword, AnsiString text)
{
  int i, pos, key;
  AnsiString dummy;
  pos = 0;
  for (i=0; i<text.Length(); i++)
{
    if (pos == keyword.Length())
      {
      pos = 0;
      }
    else
      {
      pos++;
      }
  key = StrToInt(text[i]) + StrToInt(keyword[pos]);
  dummy = dammy + char(key); // Hier vielleicht das char(key+2) von akari verwenden?
  }
  return dummy;
}


Merke

Pascal = ist in C++ ==
und := ist = in C++

Der for fehlte auch die Bedingung i<text.Length()
akari
Moderator

Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11306
Beitrag akari Moderator 21:13:49 10.03.2008   Titel:              Zitieren

Hallo

Integerman schrieb:
akari schrieb:
zeichen = char(zeichen +2);

Ich frag mal in die Runde, warum "+2"? Geht was beim konvertieren nach Integer verloren? Wenn ja was? Reine Neugier. ;)

Nein es geht natürlich nichts verloren. Das +2 ergibt sich aus der Fragestellung von Morgleh.

bis bald
akari

_________________
In der nächsten Version wird alles besser!
Zugriffsverweigerung999
Unregistrierter




Beitrag Zugriffsverweigerung999 Unregistrierter 22:13:35 10.03.2008   Titel:              Zitieren

Hallo,
vielen Dank! Das mit == und i< muss ich wohl vergessen haben - leider kommt immernoch eine zugrffsverweigerung, gehe ich auf anhalten wird mir die Funktion von int() in strings.h geoeffnet - muss ich noch etwas anderes einbinden oder woran könnte der fehler noch liegen ?
Zugriffsverletzung002
Unregistrierter




Beitrag Zugriffsverletzung002 Unregistrierter 22:16:08 10.03.2008   Titel:              Zitieren

Hallo, danke erst mal, leider immer noch nicht alles perfekt - das StrToInt bringt mir nichts, dann müsste ja Edit1.Text eine Zahl beinhalten - ich möchte die Ordinalzahl (in Delphi ord()) ?
Nanyuki
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.12.2005
Beiträge: 717
Beitrag Nanyuki Mitglied 23:15:48 10.03.2008   Titel:              Zitieren

C++:
AnsiString Code(const AnsiString& keyword, AnsiString text)
{
  for (int i=1;i<=text.Length();i++)text[i]+=keyword[(i-1)%keyword.Length()+1];
  return text;
}


Ist das, was du erreichen wolltest?
Du brauchst übrigens kein ord() oder dergleichen, text[i] gibt dir ein char, mit dem du auch rechnen kannst.

Edit: deine Zugriffsverletzung könnte daher kommen, dass die Indexierung bei AnsiStrings bei 1 beginnt, du aber versuchst auf text[0] zuzugreifen.


Zuletzt bearbeitet von Nanyuki am 23:18:18 10.03.2008, insgesamt 1-mal bearbeitet
Zugriffsverletzung002
Unregistrierter




Beitrag Zugriffsverletzung002 Unregistrierter 16:34:34 11.03.2008   Titel:              Zitieren

Vielen, Vielen Dank an Nanyuki. Bie Pascal bzw. Delphi geht der Index immer bei 0 los - Problem geklärt.

Ist wirklich en tolles Forum!!!
Kolumbus
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.05.2007
Beiträge: 1289
Beitrag Kolumbus Mitglied 13:05:27 28.03.2008   Titel:              Zitieren

Bei VCL(C++Builder) geht im Allgemeinen der Index auch bei 0 los, nur bei AnsiString nicht! ;)

_________________
XP Prof SP3, Borland-IDE: BDS2006 Prof v10 & C++Builder 3 Std auf Athlon 64 X2 4200+, 1GB RAM <Fehlen Info's/Beschreibung dürftig? Bitte Nachfragen!> Nur Eines übersteigt die Dummheit des einzelnen Menschen; die Dummheit vieler Menschen.
plg
Unregistrierter




Beitrag plg Unregistrierter 11:06:13 22.10.2010   Titel:   ASCII-Encoder und ASCII-Decoder            Zitieren

Ich habe die folgende Aufgabestellung : Entwickeln Sie ein Programm in C++, das vier beliebige Zeichen von der Tastatur einliest und anschließend die Dezimalwerte des ASCII- Codes der vier Zeichen auf dem Bildschirm ausgibt.

Beispiel: a=97, 5=53, %=37, ?=63
plg
Unregistrierter




Beitrag plg Unregistrierter 11:07:00 22.10.2010   Titel:              Zitieren

danke im voraus
Linnea
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.06.2004
Beiträge: 1600
Beitrag Linnea Mitglied 11:29:46 22.10.2010   Titel:              Zitieren

und was genau ist nun das Problem?

Falls du möchtest, daß dir das jemand programmiert: frag mal im Projekteforum, gegen einen entsprechenden Obulus wird sich da bestimmt jemand finden.

Alternativ und kostengünstiger ist natürlich Eigeninitiative.

_________________
Zitat von Joe_M. "... DAS WORT LINNEAS: Und es stand geschrieben in der Hilfe zum BCB soll er suchen, bis er fündig ward, oder dem Greisentum anheim fiel."
ItwasluckBBS2
Unregistrierter




Beitrag ItwasluckBBS2 Unregistrierter 10:43:21 08.05.2012   Titel:              Zitieren

Hallo Jungens,

wießt ihr wie man diese ASCIII Codes andersrum schreiben kann?

z.b.

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<string.h>
 
int main()
{
char Zeile [81];
int Zahl;
 
printf("Bitte geben sie einen Satz ein: ");
gets (Zeile);
 
printf("\n");
Zahl = strlen(Zeile);
 
for (int i = 0; i < strlen(Zeile); i++)
{
 printf("%i ",Zeile[i]*Zahl);
}
printf("\n\n");
 
return 0;
}
Braunstein
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.05.2002
Beiträge: 6865
Beitrag Braunstein Mitglied 08:18:17 11.05.2012   Titel:              Zitieren

Hallo,

Es wäre wohl vernünftig dafür einen neuen Thread aufzumachen. Deinen Code nach zu urteilen auch eher im ANSI-C Forum. Dein Code ist kein C++.
Willst du also C oder C++?
c++.de :: VCL (C++ Builder) ::  String nach ASCII konvertieren   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.