Forum: PC-Programmierung String to ASCII Verständnissproblem!


von R. O. (sonofoden)


Lesenswert?

http://www.dotnetspider.com/resources/18881-How-Convert-String-ASCII.aspx

Das habe ich im Internet gefunden und damit ist auch mein 
"converting-problem" gelöst nur schaffe ich es einfach nicht zu 
verstehen wie das funktioniert...
Könnte mir einer der klugen Köpfe da draussen vielleicht erklären 
wieso/wie diese funktion funktioniert bzw. warum sie so aussieht?

LG Son of Oden

von spess53 (Gast)


Lesenswert?

Hi

Was soll die Funktion eigentlich bewirken, bzw. wozu braucht man die 
Summe aller Zeichen eines Strings?

MfG Spess

von R. O. (sonofoden)


Lesenswert?

Hi,
Steht doch auf der Homepage.
Die funktion gibt einen string asu der das ASCII equivalent des 
Eingegebenen string ist... nur habe ich nicht ganz verstanden wie dsa 
gemacht wird.

von Karl H. (kbuchegg)


Lesenswert?

R. Oden schrieb:
> http://www.dotnetspider.com/resources/18881-How-Convert-String-ASCII.aspx
>
> Das habe ich im Internet gefunden und damit ist auch mein
> "converting-problem" gelöst

Welches 'converting-problem'?


So wie ich das sehe, errechnet die Funktion sowas wie eine 'Quersumme' 
über alle Character im Originalstring.
Von dieser Summe wird dann eine Textrepräsentierung gebildet und 
zurückgegeben.

Die Funktion ist sowas wie ein Textanalogon zur mathematischen Quersumme 
von Zahlen. Aus 15 wird so 6 (weil 1 + 5 gleich 6 ist)

Im Moment ist der einzige Anwendungsfall, der mir für sowas einfällt ein 
(eher schlechter) Hash-Code. Nur wozu man dann das Ergebnis als String 
haben möchte ist mir dann wieder rätselhaft.

Interessieren würde mich, welches converting-problem du damit gelöst 
haben willst. So wie ich das sehe, kann man mit der Funktion eigentlich 
nichts wirklich Sinnvolles anfangen. Aber ich lass mich gern eines 
besseren belehren.

von spess53 (Gast)


Lesenswert?

Hi

>Die funktion gibt einen string asu der das ASCII equivalent des
>Eingegebenen string ist... nur habe ich nicht ganz verstanden wie dsa
>gemacht wird.

Ein String besteht aus ASCII-Zeichen! Die Funktion summiert die 
ASCII-Werte der Zeichen und macht daraus wieder einen String.

Was vestehst unter 'ASCII equivalent'?

MfG Spess

P.S. Die Zeilen:
            char c;
            c = input[i];

sind sinnlos.

von R. O. (sonofoden)


Lesenswert?

Hi,
Ich muss mit einem µC komunizieren und ihm befehle senden. diese befehle 
müssen aber in ASCII sein und ich möchte deshalb einen String in ASCII 
umwandeln. Gibt es sonst noch eine bessere Methode?

LG Son of Oden

von spess53 (Gast)


Lesenswert?

Hi

>Ich muss mit einem µC komunizieren und ihm befehle senden. diese befehle
>müssen aber in ASCII sein und ich möchte deshalb einen String in ASCII
>umwandeln. Gibt es sonst noch eine bessere Methode?

Ein String besteht aus ASCII-Zeichen!!! Das was die Funktion erzeugt, 
hat mit dem String nichts mehr zu tun.

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Ich muss mit einem µC komunizieren und ihm befehle senden. diese befehle
>>müssen aber in ASCII sein und ich möchte deshalb einen String in ASCII
>>umwandeln. Gibt es sonst noch eine bessere Methode?
>
> Ein String besteht aus ASCII-Zeichen!!!

Na ja, nicht notwendigerweise.
Es könnten in C# auch Unicode Zeichen sein.

Allerdings ist mir nicht klar, was die Funktion da bewirken könnte.

> Das was die Funktion erzeugt, hat mit dem String nichts mehr zu tun.

Ganz genau. Das wär sonst eine prima Kompressionsmethode: Einen String 
in einen int aufzusummieren und daraus dann wieder den kompletten String 
zu rekonstruieren (wenn auch in ASCII).
Die komplette Bibel in nur sizeof(int) Bytes. Herz was willst du mehr?

@R. Oden

Könntest du mal zeigen, welchen String du in die Funktion hineinsteckst 
und welcher String von der Funktion geliefert wird.

Irgendwie hab ich das Gefühl, du hast das ganze noch gar nicht getestet 
sondern klammerst dich am Funktionsnamen fest.

von R. O. (sonofoden)


Lesenswert?

Mhh ich werde mal rücksprache mit meinem Kollegen halten(er programmiert 
den µC) ich melde mich dann wenn ich mehr weiss.

LG Son of Oden

von spess53 (Gast)


Lesenswert?

Hi

>> Ein String besteht aus ASCII-Zeichen!!!
>Es könnten in C# auch Unicode Zeichen sein.

Weiss ich. Wollte nur nicht noch mehr Verwirrung stiften.

@sonofoden

Im Normalfall sollte sollte es ausreichen wenn du folgendes machst:

for (i = 0; i < input.Length; i++)
 {  c = input[i];
    Sende(c)              //deine Ausgaberoutine
 }

Jedenfalls son in der Art (Sorry,habe noch nie mit C programmiert).

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

spess53 schrieb:
> Hi
>
>>> Ein String besteht aus ASCII-Zeichen!!!
>>Es könnten in C# auch Unicode Zeichen sein.
>
> Weiss ich. Wollte nur nicht noch mehr Verwirrung stiften.

Dachte ich mir schon :-)

Als ich die Originalfragstellung und etwas von 'convertier-problem' las, 
war mein erster Gedanke eine Unicode zu ASCII Konversion, die man 
zweifellos gegebenenfalls machen müsste.

Ich glaube immer noch, dass es genau das ist, was der TO eigentlich 
sucht. Allerdings ist er auf eine unverschämt vage Funktionsbeschreibung 
(was ist der ASCII Wert eines Strings?) und einen (denke ich mal) mehr 
als schlecht gewählten Funktionsnamen hereingefallen. Zumindest hat mir 
das meine Glaskugel geflüstert :-)

von Arc N. (arc)


Lesenswert?

R. Oden schrieb:
> Hi,
> Ich muss mit einem µC komunizieren und ihm befehle senden. diese befehle
> müssen aber in ASCII sein und ich möchte deshalb einen String in ASCII
> umwandeln. Gibt es sonst noch eine bessere Methode?
>
> LG Son of Oden

Die Klasse SerialPort, die hier wohl verwendet wird, hat genau für 
diesen Zweck eine Eigenschaft namens Encoding.
Das Encoding legt fest wie Zeichen vor dem Senden bzw. nach dem 
Empfangen umgewandelt werden (in UTF-16, das intern für Strings 
verwendet wird). Die Default-Einstellung ist ASCIIEncoding d.h. alles 
was größer als 127 (ASCII) ist, wird in 63 ('?') umgewandelt.
Braucht man alle Werte von 0-255 kann z.B. "Western European (ISO)" (ISO 
8859-1) oder "Windows-1252" verwendet werden.
Reicht das nicht, sendet und ließt man mit den normalen Funktionen 
direkt Bytes.

von R. O. (sonofoden)


Lesenswert?

Ok, hat sich erledigt. Ich werd die Funktion sicherlich nicht 
brauchen...trotzdem danke für die Hilfe.

von R. O. (sonofoden)


Lesenswert?

Hi, Hat sich doch nicht erledigt.
Langsam bin ich verwirrt. Wie genau funktioniert das mit dem encoding?

Also ich sende einem µC das Signal "Z1", "Z2", "Z3" oder "Z4".
Dananch sendet der µC das dementschrechende Signal als Antwort z.B.:" 
Z1+568"
das heisst "zone1" + ein Wert von 0-1024.

So ich verarbeite diese Antwort jetzt folgendermaßen: ich schaue nach 
welche Zone und nehme dann den Angehängten wert und speichere ihn in 
einer Variable ab.

Das ist die Komunikation die aufgebaut werden muss. Ist das auf diese 
Weise möglich (einfach einen string zu senden  und die antwort als 
string zu bekommen) wenn ich encoding=ASCII eingestellt habe? oder muss 
ich da als Zwischenschritt irgendwo noch etwas convertieren?

Danke für die Hilfe bis jetzt ihr seid die besten..gg

LG Son of Oden

von Arc N. (arc)


Lesenswert?

R. Oden schrieb:
> oder muss
> ich da als Zwischenschritt irgendwo noch etwas convertieren?

Nein.

von Thomas L. (somnatic)


Lesenswert?

Jep, das ist möglich
1
  SerialPort sp = new SerialPort();
2
  sp.Encoding = Encoding.ASCII;
3
  sp.Write("Blaaaaa");
4
  string output = sp.ReadLine();

Natürlich musst du auch noch sagen welchen Port du verwenden willst usw.
Bei einem Senden wird jedoch der String automatisch in ASCII umkodiert, 
beim Empfangen dann wieder automatisch nach Unicode.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.