Eu tenho um caractere em c #:
char foo = '2';
Agora eu quero colocar o 2 em um int. Acho que Convert.ToInt32 retorna o valor decimal real do caractere e não o número 2. O seguinte funcionará:
int bar = Convert.ToInt32(new string(foo, 1));
O int.parse também funciona apenas em strings.
Não existe nenhuma função nativa no C # para passar de um char para int sem torná-lo uma string? Eu sei que isso é trivial, mas parece estranho que não haja nada nativo para fazer diretamente a conversão.
char.GetNumericValue('¼')
produz 0,25. As alegrias de Unicode ... ;-)char
paraint
sem usarstring
pela primeira vez.Isso o converterá em um int:
Isso funciona porque cada caractere é representado internamente por um número. Os caracteres '0' a '9' são representados por números consecutivos, portanto, encontrar a diferença entre os caracteres '0' e '2' resulta no número 2.
fonte
char
é sempre UTF-16.Alguém já pensou em usar
int.Parse()
eint.TryParse()
assimAinda melhor assim
É muito mais seguro e menos propenso a erros
fonte
'0'
do caractere.e você pode criar um método estático a partir dele:
fonte
Tente isto
fonte
'9'
, mas seu código possui9
, o que não será compilado.Por padrão, você usa UNICODE, então sugiro usar o método defeituoso
int bar = int.Parse(foo.ToString());
Mesmo que os valores numéricos abaixo sejam os mesmos para dígitos e caracteres latinos básicos.
fonte
Isso converte em um número inteiro e manipula unicode
CharUnicodeInfo.GetDecimalDigitValue('2')
Você pode ler mais aqui .
fonte
A maneira real é:
"theNameOfYourInt" - o int para o qual você deseja que seu char seja transformado.
"theNameOfYourChar" - O Char que você deseja que seja usado para que seja transformado em um int.
Deixe tudo o resto.
fonte
Princípio:
O binário dos caracteres ASCII 0-9 é:
e se você pegar em cada um deles os primeiros 4 LSB (usando AND bit a bit com 8'b00001111 igual a 15), obterá o número real (0000 = 0,0001 = 1,0010 = 2, ...)
Uso:
fonte
Estou de acordo com @Chad Grant
Também à direita, se você converter para string, poderá usar esse valor como numérico, conforme mencionado na pergunta
Eu tentei criar um exemplo mais simples e compreensível
char.GetNumericValue (v) retorna como duplo e converte para (int)
Uso mais avançado como uma matriz
fonte
Comparação de alguns dos métodos com base no resultado quando o caractere não é um dígito ASCII:
fonte
Estou usando o Compact Framework 3.5 e não possui um método "char.Parse". Eu acho que não é ruim usar a classe Convert. (Veja CLR via C #, Jeffrey Richter)
Funciona com caracteres ASCII ou Unicode
fonte
Isso funcionou para mim:
fonte
int.Parse(foo.ToString())
, exceto por ser menos legível?Eu já vi muitas respostas, mas elas me parecem confusas. Não podemos simplesmente usar a conversão de tipo.
Por exemplo: -
fonte