![]() |
Char nach Int32: aus 3 wird 51
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. :gruebel: Meine Methode sieht so aus:
Code:
Hat jemand eine gute Idee?
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; Chris |
Re: Char nach Int32: aus 3 wird 51
Geht in C# kein normaler C++-Cast mehr?
Code:
int iCurThing = int(cCurThing);
|
Re: Char nach Int32: aus 3 wird 51
Zitat:
Oder anders ausgedrückt: 3 or 3 shl 16 |
Re: Char nach Int32: aus 3 wird 51
Hi Olli,
naja... geben tut es das schon:
Code:
Aber dabei habe ich genau das gleiche Problem. ;)
iCurThing = (int) cSomeThing;
@Nico: ähm. Ja, und? Chris |
Re: Char nach Int32: aus 3 wird 51
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())
|
Re: Char nach Int32: aus 3 wird 51
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(); |
Re: Char nach Int32: aus 3 wird 51
Zitat:
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. :wall: |
Re: Char nach Int32: aus 3 wird 51
Hi,
@Mike: ah. :idea: So geht's. Habe mir schon fast gedacht, dass es damit zusammenhängt, aber wusste nicht, wie ich das Umgehen konnte. :) Danke dir! :thumb: @Sebastian: naja, dann habe ich aber zwei Umwandlungen auf einmal. ;) Das kostet mehr Zeit. :tongue: @Olli: Naja... int(bla) geht aber nicht. :zwinker: Chris |
Re: Char nach Int32: aus 3 wird 51
Ich sehe nicht, dass Chimaira weniger hätte :P .
|
Re: Char nach Int32: aus 3 wird 51
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz