[c#] C # char a int



Answers

Questo lo convertirà in un int:

char foo = '2';
int bar = foo - '0';

Questo funziona perché ogni personaggio è internamente rappresentato da un numero. I caratteri da "0" a "9" sono rappresentati da numeri consecutivi, quindi trovare la differenza tra i caratteri "0" e "2" risulta nel numero 2.

Question

Quindi ho un carattere in C #:

char foo = '2';

Ora voglio ottenere il 2 in un int. Trovo che Convert.ToInt32 restituisce il valore decimale effettivo del char e non il numero 2. Quanto segue funzionerà:

int bar = Convert.ToInt32(new string(foo, 1));

int.parse funziona solo su stringhe.

Non esiste una funzione nativa in C # per passare da un char a un int senza renderlo una stringa? So che questo è banale ma sembra strano che non ci sia nulla di nativo nel fare direttamente la conversione.




Per impostazione predefinita si utilizza UNICODE, quindi suggerisco di utilizzare il metodo di errore

int bar = int.Parse(foo.ToString());

Anche se i valori numerici sotto sono gli stessi per cifre e caratteri latini di base.




char c = '1';
int i = (int)(c-'0');

e puoi creare un metodo statico al di fuori di esso:

static int ToInt(this char c)
{
    return (int)(c - '0');
}



Sto usando Compact Framework 3.5 e non ho un metodo "char.Parse". Penso che non sia male usare la classe Convert. (Vedi CLR tramite C #, Jeffrey Richter)

char letterA = Convert.ToChar(65);
Console.WriteLine(letterA);
letterA = 'あ';
ushort valueA = Convert.ToUInt16(letterA);
Console.WriteLine(valueA);
char japaneseA = Convert.ToChar(valueA);
Console.WriteLine(japaneseA);

Funziona con char ASCII o char Unicode




Confronto di alcuni dei metodi basati sul risultato quando il carattere non è una cifra ASCII:

char c = '\n';                              
Debug.Print($"{c & 15}");                   // 10
Debug.Print($"{c ^ 48}");                   // 58
Debug.Print($"{c - 48}");                   // -38
Debug.Print($"{(uint)c - 48}");             // 4294967258
Debug.Print($"{char.GetNumericValue(c)}");  // -1 



Ho visto molte risposte ma mi sembrano confuse. Non possiamo semplicemente usare Type Casting.

Per esempio: -

int s;
char i= '2';
s = (int) i;





Links



Tags

c# c#   char   int