AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Char nach Int32: aus 3 wird 51

Ein Thema von CalganX · begonnen am 6. Jul 2005 · letzter Beitrag vom 6. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 19:38
Hi,
ich versuche gerade ein wenig mit Strings und Integern herum zu hantieren. Leider funktioniert das nicht ganz so, wie ich das gerne hätte.

Ich habe also einen String in ein Array of Char packen können. Nun will ich aber alle Elemente dieses Arrays als Zahlen haben, also dachte ich mir - schlau wie ich bin -, dass ich mit Convert.ToInt32 eigentlich auf das gewünschte Ergebnis kommen würde. Aber leider dann doch nicht.
Ich habe mit Debuggen bereits herausgefunden, dass in dem entsprechenden Array-Element '3' drin steht. Nach der Umwandlung in Int32 ist die int-Variable mit dem Wert 51 gefüllt. Sozusagen das 17fache von 3. Aber warum? Ich kann eigentlich keinen Fehler entdecken.

Meine Methode sieht so aus:
Code:
   char cCurThing = ISBN.ToCharArray()[idx-1]; // idx ist eine beliebige Integervariable. cCurThing hat lt. Debugging auch den richtigen Wert (z.B. '3')

   int iCurThing = Convert.ToInt32(cCurThing); // hier hapert's: denn cCurThing hat immer noch den richtigen Wert, aber iCurThing bekommt den Wert 51, obwohl cCurThing eigentlich '3' ist

   iCheckSum = idx * iCurThing;
Hat jemand eine gute Idee?

Chris
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 19:45
Geht in C# kein normaler C++-Cast mehr?

Code:
int iCurThing = int(cCurThing);
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#3

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 19:48
Zitat von Chakotay1308:
Sozusagen das 17fache von 3.
Ich würde eher sagen: das (16+1)-fache.
Oder anders ausgedrückt: 3 or 3 shl 16
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 19:48
Hi Olli,
naja... geben tut es das schon:
Code:
iCurThing = (int) cSomeThing;
Aber dabei habe ich genau das gleiche Problem.

@Nico: ähm. Ja, und?

Chris
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#5

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 19:50
cCurThing hat den Wert '3'
nach dem Convert hat iCurThing den Wert 51
Man beachte die >'<
Soll heißen: Du hast sowas ähnliches wie den Ascii-Code
versuch mal nicht 3 im String an der Stelle stehn zu haben, sondern 4
dann wird der integerwert 52 sein
Dass du aus einem Char den wirklichen Integerwert bekommst musst du ihn erst in einen String umwandeln:
Code:
Convert.ToInt32(cCurThing.ToString())
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 19:54
Es gibt sogar eine Methode "Char.GetNumericValue", die gibt aber Double zurück:
Code:
char c = '3';
int i = (int)Char.GetNumericValue(c);
Console.WriteLine(i);
Console.ReadLine();
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 19:58
Zitat von Chakotay1308:
Code:
iCurThing = (int) cSomeThing;
Kannst ruhig einen C++-style-Cast benutzen. Es müssen ja nicht immer alle Dämlichkeiten von C weitergepflegt werden! "int(Bla)" ist nämlich besser lesbar/verstehbar als "(int)Bla".
Zumal ja gerade Operatoren für Typumwandlung seit C++ existieren und so nichtmal das Argument zieht, daß "int(Bla)" einem Funktionsaufruf zu ähnlich sähe.

@Chimaira: Du hast vollkommen recht.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 20:02
Hi,
@Mike: ah. So geht's. Habe mir schon fast gedacht, dass es damit zusammenhängt, aber wusste nicht, wie ich das Umgehen konnte. Danke dir!

@Sebastian: naja, dann habe ich aber zwei Umwandlungen auf einmal. Das kostet mehr Zeit.

@Olli: Naja... int(bla) geht aber nicht.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 20:07
Ich sehe nicht, dass Chimaira weniger hätte .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: Char nach Int32: aus 3 wird 51

  Alt 6. Jul 2005, 20:08
Zitat von Chakotay1308:
@Olli: Naja... int(bla) geht aber nicht.
wie jetzt? C# hat diesen Stil wieder abgeschafft? Oder meinst du, daß die Umwandlung eines ASCII-Zeichens von '0'..'9' nicht geht. Doch geht - aber nur mit Subtraktion! Das war aber deiner anfänglichen Frage nicht zu entnehmen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz