Saya memiliki char di c #:
char foo = '2';
Sekarang saya ingin memasukkan 2 ke int. Saya menemukan bahwa Convert.ToInt32 mengembalikan nilai desimal sebenarnya dari char dan bukan angka 2. Berikut ini akan berfungsi:
int bar = Convert.ToInt32(new string(foo, 1));
int.parse hanya bekerja pada string juga.
Apakah tidak ada fungsi asli di C # untuk beralih dari char ke int tanpa membuatnya menjadi string? Saya tahu ini sepele tetapi sepertinya aneh bahwa tidak ada yang asli untuk langsung melakukan konversi.
char.GetNumericValue('¼')
menghasilkan 0,25.char
untukint
tanpa menggunakanstring
pertama.Ini akan mengubahnya menjadi int:
Ini berfungsi karena setiap karakter secara internal diwakili oleh angka. Karakter '0' hingga '9' diwakili oleh angka berurutan, sehingga menemukan perbedaan antara karakter '0' dan '2' menghasilkan angka 2.
sumber
char
selalu UTF-16.Adakah yang mempertimbangkan untuk menggunakan
int.Parse()
danint.TryParse()
menyukai iniBahkan lebih baik seperti ini
Jauh lebih aman dan lebih sedikit kesalahan
sumber
'0'
dari char.dan Anda dapat membuat metode statis dari itu:
sumber
Coba ini
sumber
'9'
, tetapi kode Anda sudah9
, yang tidak dapat dikompilasi.Secara default Anda menggunakan UNICODE jadi saya sarankan menggunakan metode yang salah
int bar = int.Parse(foo.ToString());
Meskipun nilai numerik di bawah adalah sama untuk digit dan karakter dasar Latin.
sumber
Ini mengkonversi ke integer dan menangani unicode
CharUnicodeInfo.GetDecimalDigitValue('2')
Anda dapat membaca lebih lanjut di sini .
sumber
Cara sebenarnya adalah:
"theNameOfYourInt" - int yang Anda inginkan untuk diubah char Anda.
"theNameOfYourChar" - Char yang ingin Anda gunakan sehingga akan diubah menjadi int.
Biarkan yang lainnya.
sumber
Prinsip:
Biner dari charecters 0-9 ASCII adalah:
dan jika Anda mengambil masing-masing dari mereka 4 LSB pertama (menggunakan bitwise AND dengan 8'b00001111 yang sama dengan 15) Anda mendapatkan angka aktual (0000 = 0,0001 = 1.0010 = 2, ...)
Pemakaian:
sumber
Saya setuju dengan @Chad Grant
Juga benar jika Anda mengonversi ke string maka Anda dapat menggunakan nilai itu sebagai angka seperti yang dikatakan dalam pertanyaan
Saya mencoba membuat contoh yang lebih sederhana dan mudah dimengerti
char.GetNumericValue (v) kembali sebagai dua kali lipat dan dikonversi ke (int)
Penggunaan lebih lanjut sebagai array
sumber
Perbandingan beberapa metode berdasarkan hasil ketika karakter bukan digit ASCII:
sumber
Saya menggunakan Compact Framework 3.5, dan tidak memiliki metode "char.Parse". Saya pikir tidak buruk untuk menggunakan kelas Convert. (Lihat CLR via C #, Jeffrey Richter)
Bekerja dengan char ASCII atau char Unicode
sumber
Ini bekerja untuk saya:
sumber
int.Parse(foo.ToString())
, kecuali karena kurang dibaca?Saya telah melihat banyak jawaban tetapi tampaknya membingungkan bagi saya. Tidak bisakah kita cukup menggunakan Tipe Casting.
Sebagai contoh: -
sumber